﻿<?xml version="1.0" encoding="utf-8"?>
<blog xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" root-url="http://blueonionsoftware.com/Blog.aspx" xmlns="http://www.blogml.com/2006/09/BlogML">
  <title>Onion Peels</title>
  <sub-title>Thoughts about Technology and Life</sub-title>
  <authors>
    <author id="0" email="">
      <title>Mike Ward</title>
    </author>
  </authors>
  <extended-properties>
    <property name="accepted_license" value="True" />
    <property name="author_first_name" value="Mike" />
    <property name="author_last_name" value="Ward" />
    <property name="language" value="en-us" />
    <property name="copyright" value="Copyright (c) 2006 Blue Onion Software, All rights reserved" />
    <property name="webmaster" value="mike@blueonionsoftware.com" />
    <property name="author_email" value="" />
    <property name="rss_image" value="http://feeds.feedburner.com/~fc/blueonionsoftware" />
    <property name="rss_footer" value="&lt;hr/&gt;&lt;p&gt;powered by &lt;a href=&quot;http://blueonionsoftware.com/Bloget.aspx&quot; title=&quot;An ASP.NET Blog Control&quot;&gt;Bloget&amp;trade;&lt;/a&gt;&lt;/p&gt;" />
    <property name="rss_entries_per_feed" value="10" />
    <property name="posts_per_page" value="10" />
    <property name="password" value="B8-56-97-5A-8B-05-FE-39-9B-B9-55-0A-19-AA-48-23" />
    <property name="salt" value="ekgxcddo.x2x" />
    <property name="allow_comments" value="True" />
    <property name="max_comments_per_post" value="20" />
    <property name="expire_comments" value="30" />
    <property name="email_comments" value="True" />
    <property name="email_pingbacks" value="True" />
    <property name="email_from" value="bloget@bloget.com" />
    <property name="email_to" value="mike@blueonionsoftware.com" />
    <property name="email_host" value="relay-hosting.secureserver.net" />
    <property name="email_port" value="25" />
    <property name="email_authorize" value="False" />
    <property name="email_username" value="" />
    <property name="email_password" value="" />
    <property name="rpc_url" value="http://blueonionsoftware.com/Rpc.aspx" />
    <property name="image_folder" value="~/Blog/Images/" />
    <property name="image_gallery_url" value="http://blueonionsoftware.com/ftb.imagegallery.aspx" />
    <property name="image_url" value="http://blueonionsoftware.com/Blog/Images/" />
    <property name="enable_megaweblogapi" value="True" />
    <property name="enable_rsd" value="True" />
    <property name="enable_auto_pingback" value="True" />
    <property name="enable_pingback_service" value="True" />
    <property name="expire_pingbacks" value="20" />
    <property name="maximum_pingbacks_per_post" value="100" />
  </extended-properties>
  <categories>
    <category id="0" parentref="0" description=".Net">
      <title>.Net</title>
    </category>
    <category id="1" parentref="0" description="ASP.Net">
      <title>ASP.Net</title>
    </category>
    <category id="2" parentref="0" description="Bloget">
      <title>Bloget</title>
    </category>
    <category id="3" parentref="0" description="Browsers">
      <title>Browsers</title>
    </category>
    <category id="4" parentref="0" description="C#">
      <title>C#</title>
    </category>
    <category id="5" parentref="0" description="Freebies">
      <title>Freebies</title>
    </category>
    <category id="6" parentref="0" description="Life">
      <title>Life</title>
    </category>
    <category id="7" parentref="0" description="Online Applications">
      <title>Online Applications</title>
    </category>
    <category id="8" parentref="0" description="Programming">
      <title>Programming</title>
    </category>
    <category id="9" parentref="0" description="Security">
      <title>Security</title>
    </category>
    <category id="10" parentref="0" description="Technology">
      <title>Technology</title>
    </category>
    <category id="11" parentref="0" description="Science">
      <title>Science</title>
    </category>
    <category id="12" parentref="0" description="PC Tips">
      <title>PC Tips</title>
    </category>
    <category id="13" parentref="0" description="Gadgets">
      <title>Gadgets</title>
    </category>
    <category id="14" parentref="0" description="Links">
      <title>Links</title>
    </category>
  </categories>
  <posts>
    <post id="bd2aff74-99dd-4f79-adf8-cb3c5757c923" date-created="2007-02-28T23:31:29.7236014Z" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=bd2aff74-99dd-4f79-adf8-cb3c5757c923" type="normal">
      <title>Bloget™ Alpha 5</title>
      <content>&lt;p&gt;Despite a trip to Slovakia this month I managed to squeak out the next alpha of &lt;a href="http://blueonionsoftware.com/bloget.aspx"&gt;Bloget&lt;/a&gt;. Alpha 5 introduces two new features, timezone support and &lt;a href="http://blogml.com"&gt;BlogML&lt;/a&gt;. Timezones are well, timezones. You can set the timezone of your blog to reflect your location. Sounds simple I know but it requires a bit more coding than you might think. Makes me wish I had .NET 3.0 which does support timezone conversions.&lt;/p&gt; &lt;p&gt;&lt;a href="http://blueonionsoftware.com/Blog/Images/WindowsLiveWriter/BlogetAlpha5_FF7C/rulerock%5B3%5D.jpg" atomicselection="true"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; margin: 0px 15px 0px 0px; border-right-width: 0px" height="221" src="http://blueonionsoftware.com/Blog/Images/WindowsLiveWriter/BlogetAlpha5_FF7C/rulerock_thumb%5B1%5D.jpg" width="240" align="left" border="0"&gt;&lt;/a&gt; BlogML is an XML format for storing the entire content of a blog. You can use BlogML as a way to archive the contents of blogs or to act as a standard format for transferring content from one blog to another - this could include migrating a blog from one blogging engine to another. Check it out in the admin screen under import/export.&lt;/p&gt; &lt;p&gt;Of course there are the usual cleanups and usability changes one expects at this phase of a project. One thing that's not going to change is the data schemas. That's right, I'm throwing the gauntlet down and locking in the data schemes. I may add to them but no breaking changes at this point. If you have been hesitating because you were afraid future versions won't work with your current data, fear not. Besides, with BlogML support you can always export and reimport but that won't be necessary.&lt;/p&gt; &lt;p&gt;As for Alpha 6, I'm planning on adding three new controls: BlogRoll, Recent Comments and Archives by Month. If things go real well, I'll add black lists as well but I'm traveling to Florida this month so time's limited (isn't it always?).&lt;/p&gt; &lt;p&gt;So there you have it, another release of my soon to be world famous blog engine (yeah, right). As always, send feedback. - Mike&lt;/p&gt;</content>
      <post-name>Bloget™ Alpha 5</post-name>
      <categories>
        <category ref="2" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="a6ec8f0d-5727-4b74-b858-3b4aa8d5ae83" date-created="2007-02-25T21:38:33.6167623Z" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=a6ec8f0d-5727-4b74-b858-3b4aa8d5ae83" type="normal">
      <title>Links 2007-02-25</title>
      <content>
		&lt;p&gt;
				&lt;a href="http://www.madskristensen.dk/blog/PermaLink,guid,f039bd8a-437e-4101-b607-fdba975d5560.aspx" target="_blank"&gt;Universal Data Type Checker&lt;/a&gt;
				&lt;br /&gt;Here's a neat little C# function for checking if one can convert a string value to a specific type.&lt;/p&gt;
		&lt;p&gt;Here are some examples:&lt;/p&gt;
		&lt;p&gt;
				&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;
		&lt;/p&gt;
		&lt;pre class="csharpcode"&gt;CanConvert(&lt;span class="str"&gt;"12"&lt;/span&gt;, &lt;span class="kwrd"&gt;typeof&lt;/span&gt;(&lt;span class="kwrd"&gt;int&lt;/span&gt;)); &lt;span class="rem"&gt;// true&lt;/span&gt;
CanConvert(&lt;span class="str"&gt;"f637a876-9d58-4229-9559-a5e42a95fdac "&lt;/span&gt;, &lt;span class="kwrd"&gt;typeof&lt;/span&gt;(Guid)); &lt;span class="rem"&gt;// true&lt;/span&gt;
CanConvert(&lt;span class="str"&gt;"Backspace"&lt;/span&gt;, &lt;span class="kwrd"&gt;typeof&lt;/span&gt;(System.ConsoleKey)); &lt;span class="rem"&gt;// true&lt;/span&gt;
CanConvert(&lt;span class="str"&gt;"10px"&lt;/span&gt;, &lt;span class="kwrd"&gt;typeof&lt;/span&gt;(System.Web.UI.WebControls.Unit)); &lt;span class="rem"&gt;// true&lt;/span&gt;
CanConvert(&lt;span class="str"&gt;"red"&lt;/span&gt;, &lt;span class="kwrd"&gt;typeof&lt;/span&gt;(System.Drawing.Color)); // true&lt;/pre&gt;
		&lt;p&gt;
				&lt;a href="http://blogs.zdnet.com/Bott/?p=190" target="_blank"&gt;Windows Vista’s three killer features&lt;/a&gt;
				&lt;br /&gt;I've heard many people trash talk Vista. I heard the same thing when XP debuted. Ed Bott actually has spent time with the Vista and offers up what I would call a "fair" assessment of the Microsoft's latest offering.&lt;/p&gt;
		&lt;p&gt;
				&lt;a href="http://blog.csharp-online.net/?p=90" target="_blank"&gt;C# Keyboard Shortcut Posters&lt;/a&gt;
				&lt;br /&gt;Here is a really nice, colorful poster of the standard C# keyboard shortcuts. You'll need a printer that can print on 18" paper to get the full resolution of this one. It's Ok on legal size paper as well.&lt;/p&gt;
		&lt;p&gt;
				&lt;a href="http://www.smashingmagazine.com/2007/01/31/inspire-yourself-50-remarkable-favicons/" target="_blank"&gt;Inspire Yourself: 50 Remarkable Favicons&lt;/a&gt;
				&lt;br /&gt;The good folks at Smashing Magazine of an excellent collection of Favicons free for the taking. &lt;img src="http://blueonionsoftware.com/Blog/Images/WindowsLiveWriter/Links20070225_E202/3a%5B4%5D.gif" height="16" width="16" /&gt;&lt;/p&gt;
		&lt;p&gt;
				&lt;a href="http://www.famfamfam.com/lab/icons/silk/" target="_blank"&gt;SILK ICONS&lt;/a&gt;
				&lt;br /&gt;More lovely and free icons for your Web site.&lt;/p&gt;
		&lt;p&gt;
				&lt;a href="http://www.kevinfreitas.net/extensions/measureit/" target="_blank"&gt;
						&lt;img style="border-width: 0px; margin: 0px 0px 0px 15px;" alt="Sample MeasureIt image" src="http://blueonionsoftware.com/Blog/Images/WindowsLiveWriter/Links20070225_E202/measureit-01%5B12%5D.png" align="right" border="0" height="78" width="240" /&gt;MeasureIt - Firefox ruler extension&lt;/a&gt;
				&lt;br /&gt;This is a really nice measuring tool for Firefox browsers. Draw a ruler across any Web page to check the width, height, or alignment of page elements in pixels.&lt;/p&gt;
		&lt;p&gt;
				&lt;a href="http://kb.mozillazine.org/About_protocol_links" target="_blank"&gt;About protocol links - MozillaZine Knowledge Base&lt;/a&gt;
				&lt;br /&gt;This is a listing of all the about protocol links in Firefox. There are a few special URLs, which begin with &lt;b&gt;about:&lt;/b&gt;, that you can type into the Location Bar.&lt;/p&gt;
		&lt;p&gt;
				&lt;a href="http://west-wind.com/WebLog/posts/10494.aspx" target="_blank"&gt;MS AJAX 1.0 is here&lt;/a&gt;
				&lt;br /&gt;Rick Strahl's blog is one of the best overviews of MS AJAX 1.0 I've read to date.&lt;/p&gt;
		&lt;p&gt;
				&lt;a href="http://www.codeproject.com/csharp/ContextHelpMadeEasy.asp" target="_blank"&gt;Context Help Made Easy&lt;/a&gt;
				&lt;br /&gt;This article introduces a way to instrument your code that enables help authors to associate help topics with the application's visual contexts at any time - even post-compilation – and to do so using the application's user interface without the involvement of the developer. There is no need for the help author to manually edit any files or have knowledge of any internals.&lt;/p&gt;
		&lt;p&gt;
				&lt;a href="http://blueonionsoftware.com/Blog/Images/WindowsLiveWriter/Links20070225_E202/clrplatformsmall%5B3%5D.jpg" target=""&gt;
						&lt;img style="border-width: 0px; margin: 0px 0px 0px 15px;" src="http://blueonionsoftware.com/Blog/Images/WindowsLiveWriter/Links20070225_E202/clrplatformsmall_thumb%5B1%5D.jpg" align="right" border="0" height="151" width="240" /&gt; X-Hawk: The Revolutionary, Modular, VTOL Aircraft&lt;/a&gt;
				&lt;br /&gt;X-Hawk is a ‘rotorless’ Vertical-Take-Off and Landing (VTOL) aircraft. To be more precise, it is an aircraft that has the VTOL capability of a helicopter, but without the exposed rotors that make it dangerous or impossible for helicopters to maneuver in complex urban and natural environments.&lt;/p&gt;
</content>
      <post-name>Links 2007-02-25</post-name>
      <categories>
        <category ref="14" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="7b0ff9d6-74b4-441a-aeb6-8f9082b8891f" date-created="2007-02-24T19:00:31.4642737Z" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=7b0ff9d6-74b4-441a-aeb6-8f9082b8891f" type="normal">
      <title>Bratislava - Slovakia</title>
      <content>&lt;p&gt;My real job takes me to places all over Europe as of late. I'm currently blogging from my hotel room in Bratislava. If you haven't heard of Bratislava you're not alone, neither had I. This former Soviet block country is waking up to capitalism in a big way. It reminds me of Moscow back in the 1999 when I visited there.&lt;/p&gt; &lt;p&gt;&lt;a href="http://blueonionsoftware.com/Blog/Images/WindowsLiveWriter/BrataslaviaSlovakia_1817/Bratislavsky_hrad%5B1%5D.jpg" atomicselection="true"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="180" src="http://blueonionsoftware.com/Blog/Images/WindowsLiveWriter/BrataslaviaSlovakia_1817/Bratislavsky_hrad.jpg" width="240" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;The old part of town is suppose to be quite beautiful. Unfortunately, I'm in a more "industrial" part of town and probably won't get time this trip to tour. Too bad for me because judging from some of the pictures, I'm missing some pretty sights. And speaking of pretty sights, the women here are very beautiful. They're strikingly thin, healthy looking and tall. Again, not unlike the women I saw in Moscow (notice the word &lt;strong&gt;saw&lt;/strong&gt;, not met. I am after all a happily married middle-aged geek).&lt;/p&gt; &lt;p&gt;Bratislava is going through a spurt of hyper-growth at the moment. My Slovakian colleagues tell me that the number of cars in the city has doubled in the last four years. That's some fast growing for a city of 400,000. You still see many of the old Soviet era housing blocks many of which are in disrepair, but they're are building cranes everywhere and many recognizable industry names like Siemens (my parent company), Samsung and Sony.&lt;/p&gt; &lt;p&gt;&lt;a href="http://blueonionsoftware.com/Blog/Images/WindowsLiveWriter/BrataslaviaSlovakia_1817/Bratislava_square%5B1%5D.jpg" atomicselection="true"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="161" src="http://blueonionsoftware.com/Blog/Images/WindowsLiveWriter/BrataslaviaSlovakia_1817/Bratislava_square.jpg" width="240" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;English is spoken here like most places in Europe owing to the large influx of outsourcing and good old American culture. They seem strangely attracted to disco era music if what I'm hearing on the radio here is any indication. The currency is the Slovakian Crown which is running about 32 crowns to the Euro at the moment or 25 to the US dollar. Many places except either Euros or Crowns but not every where. Most hotels here exchange Euros for Crowns with no commission costs.&lt;/p&gt; &lt;p&gt;Food has been great. My only complaint is that it's a bit salty and I have a pretty good tolerance for salt. Most of its your standard fair and quite recognizable Western palettes. I had a really good anchovy pizza that only a real anchovy lover can appreciate. The one thing they don't have is sandwiches. One of my colleagues asked at several places and always received a strange stare as if he had asked for some alien dish.&lt;/p&gt; &lt;p&gt;&lt;a href="http://blueonionsoftware.com/Blog/Images/WindowsLiveWriter/BrataslaviaSlovakia_1817/Bratislava_building%5B1%5D.jpg" atomicselection="true"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="240" src="http://blueonionsoftware.com/Blog/Images/WindowsLiveWriter/BrataslaviaSlovakia_1817/Bratislava_building.jpg" width="161" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Alcohol is very good as well. It's wine making country after all. The hotel we stayed at was owned by a vineyard so you can imagine the selection great. I'm more of a scotch and brandy man myself but the we had a few Pinot Noir's that my colleagues felt were outstanding. I in turn found a locally made brandy that was simply superb. It's called “Karpatské Brandy Špeciál”  (the Carpathian Brandy Special) and it's a winner. Beer is also excellent. I tried Topvar and Zlatý Bažant brands and was not disappointed. The proofing scale is different here. In the US we use a proofing scale where one simply divides by two to get the alcohol content (trivia, this is always measured at 60°F). In Slovakia, you'll see ratings like 12° Proof. Dividing by 2 is approximately the alcohol content in percentage by volume. I say approximately because 100% alcohol in this scale is 175 and not 200.&lt;/p&gt; &lt;p&gt;Update:&lt;/p&gt; &lt;p&gt;&lt;a href="http://blueonionsoftware.com/Blog/Images/WindowsLiveWriter/BrataslaviaSlovakia_1817/Bratislava_street%5B1%5D.jpg" atomicselection="true"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="240" src="http://blueonionsoftware.com/Blog/Images/WindowsLiveWriter/BrataslaviaSlovakia_1817/Bratislava_street.jpg" width="161" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;I did get to the old city later in the week and was it worth it. This is a very pretty, Napoleonic city with great shopping and great eateries. Really really nice. I hiked up to the castle which appears to function as a parliament now. From up here, you can see the Danube river which bisects the town. Truly a beautiful view. There are hundreds of historical buildings and wonderful places to explore. I plan to "educate" myself about this place before I visit again.&lt;/p&gt; &lt;p&gt;&lt;a href="http://blueonionsoftware.com/Blog/Images/WindowsLiveWriter/BrataslaviaSlovakia_1817/Bratislava_divadlo%5B1%5D.jpg" atomicselection="true"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="187" src="http://blueonionsoftware.com/Blog/Images/WindowsLiveWriter/BrataslaviaSlovakia_1817/Bratislava_divadlo.jpg" width="240" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;I did manage to get some actual work done while I was there. Don't you just hate it when work gets in the way of play? &lt;img alt="smile_wink" src="http://spaces.live.com/rte/emoticons/smile_wink.gif"&gt;&lt;/p&gt;</content>
      <post-name>Bratislava - Slovakia</post-name>
      <categories>
        <category ref="6" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="ed81072a-ac5d-49ed-a92b-7563ac08ae38" date-created="2007-02-15T01:46:23.1214335Z" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=ed81072a-ac5d-49ed-a92b-7563ac08ae38" type="normal">
      <title>Vista Ready to Launch Event in Detroit</title>
      <content>&lt;p&gt;The Vista Ready to Launch tour came to Detroit this week. These "kick-off" events are a lot of fun and the break out sessions can be very informative. Mostly I go to reenergize my interest in computers. Fresh ideas make for fresh thinking and keep me from getting bored with the technology.&lt;/p&gt; &lt;p&gt;&lt;a href="http://blueonionsoftware.com/Blog/Images/WindowsLiveWriter/VistaReadytoLaunchEventinDetroit_11591/cobo3%5B1%5D.jpg" atomicselection="true"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="180" src="http://blueonionsoftware.com/Blog/Images/WindowsLiveWriter/VistaReadytoLaunchEventinDetroit_11591/cobo3.jpg" width="240" border="0"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;I've heard people around the office bad mouthing Vista. It's interesting to note that none of them have actually used Vista. I've spent only a little time with Vista and while I'm not blown away, its a very good effort. After attending the conference in Detroit I'm even more impressed. Much of what has improved in Vista is under the covers which is why end-users are not all that excited. However, if you deploy, manage or run your business on Windows I think you'll find much to like. For example, there is only one disk image for Vista. No more fumbling with different HAL's. That's huge.&lt;/p&gt; &lt;p&gt;My favorite feature is the Reliability Monitor. If you're like me, you probably fix and maintain computers for your friends and family. Its real value comes from its ability to track and organize system events, such as software and driver installations, and display them in a format that allows you to identify correlations between failures and other system configuration events.&lt;/p&gt; &lt;p&gt; &lt;img height="324" src="http://blueonionsoftware.com/Blog/Images/WindowsLiveWriter/VistaReadytoLaunchEventinDetroit_11591/eb_reliability_monitor%5B4%5D.png" width="394"&gt;&lt;/p&gt; &lt;p&gt;Two years ago, the Detroit .NET 2.0 launch occurred at the Renaissance Center and it really was too small for the event. This year's event was held at Cobo Center, a much nicer and larger venue. The Ready to Launch conference is touring the country and is well worth the visit if it lands near you.&lt;/p&gt;</content>
      <post-name>Vista Ready to Launch Event in Detroit</post-name>
      <categories>
        <category ref="6" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="dcc03695-57fe-4fd5-9aaa-d76f19d26152" date-created="2007-02-12T15:57:18.4039403Z" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=dcc03695-57fe-4fd5-9aaa-d76f19d26152" type="normal">
      <title>Using Keywords as Identifiers in C#</title>
      <content>&lt;p&gt;There are times when keywords and identifiers collide when coding. This is particularly true in code generators but sometimes the keyword really describes the purpose of the identifier (like &lt;strong&gt;default&lt;/strong&gt; or &lt;strong&gt;ref&lt;/strong&gt; for instance). You can come up with clever naming schemes but there is a simpler way. In C#, you can just prefix the identifier with an @ symbol.&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;Keywords are predefined reserved identifiers that have special meanings to the compiler. They cannot be used as identifiers in your program unless they include @ as a prefix. For example, @if is a legal identifier but if is not because it is a keyword. &lt;a href="http://download.microsoft.com/download/9/8/f/98fdf0c7-2bbd-40d3-9fd1-5a4159fa8044/csharp%202.0%20specification_sept_2005.doc" target="_blank"&gt;The C# Language&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;</content>
      <post-name>Using Keywords as Identifiers in C#</post-name>
      <categories>
        <category ref="4" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="c06a1199-184d-40bf-ac60-0cd39b6540df" date-created="2007-02-09T23:55:56.798134Z" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=c06a1199-184d-40bf-ac60-0cd39b6540df" type="normal">
      <title>Microsoft Word Markup Tip</title>
      <content>&lt;p&gt;I don't particularly care for the &lt;strong&gt;track changes markup&lt;/strong&gt; that displays on the right edge of documents in Microsoft Word. While it may be useful for collaborating on documents, most of what I write is solo. I searched for a way to turn this feature off for all documents. While you can't eliminate this feature entirely, you can cut down on the "visual noise" by following a few simple steps.&lt;/p&gt; &lt;p&gt;Open the track changes dialog (Click "Show" on the tool bar) and turn off the Balloons setting shown below.&lt;/p&gt; &lt;p&gt;&lt;img height="310" src="http://blueonionsoftware.com/Blog/Images/WindowsLiveWriter/MicrosoftWordMarkupTip_102BB/word0%5B4%5D.png" width="237"&gt; &lt;/p&gt; &lt;p&gt;&lt;img height="466" src="http://blueonionsoftware.com/Blog/Images/WindowsLiveWriter/MicrosoftWordMarkupTip_102BB/word%5B6%5D.png" width="432"&gt; &lt;/p&gt; &lt;p&gt;Here are some steps to turn off track changes and the associated markup for any given document.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Step 1: Turn off track changes.&lt;/strong&gt; Go to the tool menu and select track changes. Now in the old days Microsoft used to put a check mark next to the item to show if it was activated or not. Now there are icons. If the icon is highlighted, usually orange or blue, then the item is active. Seems less obvious to me but then I'm no interface guru.&lt;/p&gt; &lt;p&gt;&lt;img height="412" src="http://blueonionsoftware.com/Blog/Images/WindowsLiveWriter/MicrosoftWordMarkupTip_102BB/word1%5B6%5D.png" width="244"&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Step 2: Accept all changes.&lt;/strong&gt; Next go to the toolbar and select the item indicated in the picture. Click "Accept All Changes in Document".&lt;/p&gt; &lt;p&gt;&lt;img height="150" src="http://blueonionsoftware.com/Blog/Images/WindowsLiveWriter/MicrosoftWordMarkupTip_102BB/word2%5B4%5D.png" width="481"&gt; &lt;/p&gt; &lt;p&gt;&lt;strong&gt;Step 3: Show Final.&lt;/strong&gt; Select "Final" from the drop down list as pictured here.&lt;/p&gt; &lt;p&gt;&lt;img height="123" src="http://blueonionsoftware.com/Blog/Images/WindowsLiveWriter/MicrosoftWordMarkupTip_102BB/word3%5B4%5D.png" width="216"&gt; &lt;/p&gt; &lt;p&gt;&lt;strong&gt;Step 4: Save the document.&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Now you can edit the document without all the visual noise that track changes introduces. Also, the next time you or someone else opens the document, they'll see just the document. And finally, your document will be smaller because you don't have all the tracked changes saved.&lt;/p&gt;</content>
      <post-name>Microsoft Word Markup Tip</post-name>
      <categories>
        <category ref="12" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="6904d84d-68ac-4d3c-9dd2-3052e205d016" date-created="2007-02-07T22:54:09.8877077Z" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=6904d84d-68ac-4d3c-9dd2-3052e205d016" type="normal">
      <title>Links 2007-02-07</title>
      <content>
		&lt;p&gt;
				&lt;a href="http://www.csrc.nist.gov/pki/HashWorkshop/index.html" target="_blank"&gt;NIST’s Plan for New Cryptographic Hash Functions&lt;/a&gt;
				&lt;br /&gt;Due to recent attacks on the SHA-1 hash function specified in FIPS 180-2 , Secure Hash Standard, NIST is initiating an effort to develop one or more additional hash algorithms through a public competition, similar to the development process for the &lt;a onclick="return top.js.OpenExtLink(window,event,this)" href="http://csrc.nist.gov/CryptoToolkit/aes/index2.html" target="_blank"&gt;Advanced Encryption Standard (AES&lt;/a&gt;). What I like about this process and the earlier AES effort, is that it is public and peered reviewed. Very important for something that will likely be used to protect your personal information (like your bank account).&lt;/p&gt;
		&lt;p&gt;
				&lt;a href="http://dilbertblog.typepad.com/the_dilbert_blog/2007/01/atheists_in_jai.html" target="_blank"&gt;The Dilbert Blog: Atheists in Jail&lt;/a&gt;
				&lt;br /&gt;Have you ever wondered what percentage of prison inmates are atheists? It must be a lot, given that non-believers have no moral center and spend most of their days robbing, and killing, and sodomizing farm animals. That’s what you do when you have no morality.&lt;/p&gt;
		&lt;p&gt;
				&lt;a href="http://john-sheehan.com/blog/index.php/net-cheat-sheets/" target="_blank"&gt;.NET Cheat Sheets&lt;/a&gt;
				&lt;br /&gt;Nice collection of PDF cheat sheets.&lt;/p&gt;
		&lt;p&gt;
				&lt;a href="http://www.altools.net/ALTools/ALZip/tabid/53/Default.aspx" target="_blank"&gt;ALZip zip unzip file compression utility&lt;/a&gt;
				&lt;br /&gt;The icons are silly but the program works great. Nicer than other Zip utilities I’ve used and it’s free.&lt;/p&gt;
		&lt;p&gt;
				&lt;a href="http://www.microsoft.com/windowsxp/using/digitalphotography/prophoto/photoinfo.mspx" target="_blank"&gt;Microsoft Photo Info&lt;/a&gt;
				&lt;br /&gt;
				&lt;a href="http://blueonionsoftware.com/Blog/Images/photoinfo.gif"&gt;
						&lt;img height="130" alt="photoinfo" hspace="10" src="http://blueonionsoftware.com/Blog/Images/photoinfo_preview.jpg" width="160" align="right" border="0" /&gt;
				&lt;/a&gt;Microsoft Photo Info enables easy editing of "metadata" for digital photographs from inside Windows Explorer.&lt;/p&gt;
		&lt;p&gt;
				&lt;a href="http://blueonionsoftware.com/Blog/Images/photoinfo.gif" target="_blank"&gt;
				&lt;/a&gt;
				&lt;a href="http://blueonionsoftware.com/Blog/Images/photoinfo.gif" target="_blank"&gt;
				&lt;/a&gt;
				&lt;a href="http://blueonionsoftware.com/Blog/Images/photoinfo.gif" target="_blank"&gt;
				&lt;/a&gt;
				&lt;a href="http://blueonionsoftware.com/Blog/Images/photoinfo.gif" target="_blank"&gt;
				&lt;/a&gt;
				&lt;a href="http://blueonionsoftware.com/Blog/Images/photoinfo.gif" target="_blank"&gt;
				&lt;/a&gt;
				&lt;a href="http://www.smashingmagazine.com/2007/01/26/tutorials-round-up-ajax-css-javascript-php-mysql-and-more/" target="_blank"&gt;Tutorials Round-Up: Ajax, CSS, PHP and More&lt;/a&gt;
				&lt;br /&gt;Another great article from our friends at Smashing Magazine.&lt;/p&gt;
		&lt;p&gt;
				&lt;a href="http://web-graphics.com/mtarchive/001717.php" target="_blank"&gt;Bubble Tooltips&lt;/a&gt;
				&lt;br /&gt;Nice little technique for adding bubble tooltips to your HTML links. Here’s an &lt;a href="http://web-graphics.com/mtarchive/BubbleTooltips.html" target="_blank"&gt;example&lt;/a&gt;.&lt;/p&gt;
		&lt;p&gt;
				&lt;a href="http://www.gubb.net/" target="_blank"&gt;gubb&lt;/a&gt;
				&lt;br /&gt;Into making lists. Then gubb can help.&lt;/p&gt;
		&lt;p&gt;
				&lt;a href="http://blog.csharp-online.net/?p=86" target="_blank"&gt;Earn money with your blog&lt;/a&gt;
				&lt;br /&gt;Not an advertisement. Lists links of reputable online ad services. &lt;/p&gt;
</content>
      <post-name>Links 2007-02-07</post-name>
      <categories>
        <category ref="14" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="5c2c9e2e-ad22-46c2-891f-db1d46f9c435" date-created="2007-02-03T16:39:24.5136465Z" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=5c2c9e2e-ad22-46c2-891f-db1d46f9c435" type="normal">
      <title>Testing with Post2Blog</title>
      <content>Every time I discover a new offline blog editor I of course have to test it with &lt;a href="http://www.blueonionsoftware.com/Bloget.aspx" target="_blank" &gt;Bloget™&lt;/a&gt;.  &lt;a href="http://www.bytescout.com/post2blog.html"&gt;Post2Blog&lt;/a&gt; - a desktop blogging client for Windows. This is an example of quick snippet that inserts link to Post2Blog and text if you type "Post2Blog". To disable this quick snippet just remove it via "Tools" | "Manage Quick Snippets". This editor makes the mistake of many others and has way to many "dialogs". I hate things popping up. On the plus the live spell checker works well. &lt;img src="http://picturelli.com/images/emo/smile_smile.gif" valign="absmiddle" alt=":-)" border="0" /&gt; The snippet feature is interesting and could be useful. Seems to work well with Bloget’s implementation of MetaWeblog API although it did not detect the blog settings using Really Simple Discovery (RSD) which Bloget does support. Expensive and there are free alternatives that work just as well IMHO.</content>
      <post-name>Testing with Post2Blog</post-name>
      <categories>
        <category ref="2" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="5c50adaa-02a8-442a-9ae8-8f4dfd6778a3" date-created="2007-02-03T16:12:51.0644026Z" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=5c50adaa-02a8-442a-9ae8-8f4dfd6778a3" type="normal">
      <title>Links 2007-02-03</title>
      <content>
		&lt;p&gt;
				&lt;a href="http://microformats.org/wiki/rest/ahah" target="_blank"&gt;Microformats - rest/ahah&lt;/a&gt;
				&lt;br /&gt;AHAH is intended to be a much simpler way to do &lt;a href="http://en.wikipedia.org/wiki/Web_development"&gt;web development&lt;/a&gt; (&lt;i&gt;&lt;a href="http://en.wikipedia.org/wiki/Web_development"&gt;http://en.wikipedia.org/wiki/Web_development&lt;/a&gt;&lt;/i&gt;) than &lt;a href="http://en.wikipedia.org/wiki/Ajax_%28programming%29"&gt;AJAX&lt;/a&gt; (&lt;i&gt;&lt;a href="http://en.wikipedia.org/wiki/Ajax_%28programming%29"&gt;http://en.wikipedia.org/wiki/Ajax_%28programming%29&lt;/a&gt;&lt;/i&gt;): "Asynchronous JavaScript and XML." Strictly speaking, AHAH can be considered a subset of AJAX, since (X)HTML is just a special kind of XML. However, it is a subset with some very specific and useful properties: &lt;/p&gt;
		&lt;ol&gt;
				&lt;li&gt;The lack of custom XML schemas dramatically reduces design time  &lt;/li&gt;
				&lt;li&gt;AHAH can trivially reuse existing HTML pages, avoiding the need for a custom web service  &lt;/li&gt;
				&lt;li&gt;All data transport is done via browser-friendly HTML, easing debugging and testing  &lt;/li&gt;
				&lt;li&gt;The HTML is designed to be directly embedded in the page's DOM, eliminating the need for parsing  &lt;/li&gt;
				&lt;li&gt;As HTML, designers can format it using CSS, rather than programmers having to do XSLT transforms  &lt;/li&gt;
				&lt;li&gt;Processing is all done on the server, so the client-side programming is essentially nil (moving opaque bits) &lt;/li&gt;
		&lt;/ol&gt;
		&lt;p&gt;In fact, for any content that is destined to be viewed by the browser, it is virtually impossible to imagine any advantage to sending it as custom XML rather than structurally-correct HTML (with appropriate CSS-friendly class names, of course).&lt;br /&gt;&lt;/p&gt;
		&lt;p&gt;
				&lt;a href="http://codebetter.com/blogs/jeremy.miller/archive/2007/01/21/The-Anti-Team.aspx" target="_blank"&gt;The Anti Team&lt;/a&gt;
				&lt;br /&gt;Everyone is always talking about their ideal development team. The Anti Team is a tongue and check commentary that in my experience hits close to home. Funny!&lt;br /&gt;&lt;/p&gt;
		&lt;p&gt;
				&lt;img style="margin: 0px 0px 0px 15px;" alt="Sample Identicons" src="http://blueonionsoftware.com/Blog/Images/WindowsLiveWriter/Links20070203_934C/identicon-samples%5B8%5D.png" align="right" height="89" width="200" /&gt;
				&lt;a href="http://www.docuverse.com/blog/donpark/2007/01/18/visual-security-9-block-ip-identification" target="_blank"&gt;Visual Security: 9-block IP Identification&lt;/a&gt;
				&lt;br /&gt;Personally, I've never liked avatars/gravators. This idea is a bit simplier. Create a unique icon based on the sender's IP address. Automatic, colorful and interesting (in a geeky way). &lt;a href="http://www.codinghorror.com/blog/archives/000774.html" target="_blank"&gt;Jeff Atwood at Coding Horror has coded up a .NET version&lt;/a&gt;.  &lt;/p&gt;
		&lt;p&gt;
				&lt;a href="http://mvolo.com/blogs/serverside/archive/2007/01/21/Get-nice-looking-directory-listings-for-your-IIS-website-with-DirectoryListingModule.aspx" target="_blank"&gt;Nice looking directory listings for your IIS&lt;/a&gt;
				&lt;br /&gt;Do you hate bland directory listing pages that most web servers have these days?  The Internet has gone through many evolutions, yet web directory listings somehow got left out to the point where sometimes they appear to predate the http protocol itself (gopher, anyone?). This &lt;a href="http://mvolo.com/files/DirectoryListingApp.zip" target="_blank"&gt;IIS module&lt;/a&gt; fixes all that.&lt;/p&gt;
		&lt;p&gt;
				&lt;a href="http://blueonionsoftware.com/Blog/Images/WindowsLiveWriter/Links20070203_934C/image%7B0%7D%5B7%5D.png" target="_new" atomicselection="true"&gt;
						&lt;img style="border-width: 0px; margin: 0px 0px 0px 15px;" alt="Newpaper Clipping example" src="http://blueonionsoftware.com/Blog/Images/WindowsLiveWriter/Links20070203_934C/image%7B0%7D_thumb%5B5%5D.png" align="right" border="0" height="158" width="150" /&gt;
				&lt;/a&gt;
				&lt;a href="http://www.fodey.com/generators/newspaper/snippet.asp" target="_blank"&gt;The Newspaper Clipping Generator&lt;/a&gt;
				&lt;br /&gt;This is just plain fun. Enter a few lines of text and it generates an image of a newspaper clipping with your text.&lt;/p&gt;
		&lt;p&gt;
				&lt;a href="http://seattlepi.nwsource.com/business/300636_msftimmortal22.html" target="_blank"&gt;E-mail from the grave?&lt;/a&gt;
				&lt;br /&gt;n this culture of instant information, some Microsoft Corp. researchers are pursuing a radical notion -- the concept of saving messages for delivery in decades, centuries or more. The project, dubbed "immortal computing," would let people store digital information in physical artifacts and other forms to be preserved and revealed to future generations, and maybe even to future civilizations.&lt;/p&gt;
		&lt;p&gt;
				&lt;img style="margin: 0px 0px 0px 15px; clear: right;" src="http://blueonionsoftware.com/Blog/Images/WindowsLiveWriter/Links20070203_934C/ZENNBG%5B11%5D.jpg" align="right" height="121" width="142" /&gt;
				&lt;a href="http://www.technologyreview.com/Biztech/18086/" target="_blank"&gt;Battery Breakthrough?&lt;/a&gt;
				&lt;br /&gt;A Texas company says it can make a new ultracapacitor power system to replace the electrochemical batteries in everything from cars to laptops.&lt;/p&gt;
		&lt;p&gt;
				&lt;a href="http://crave.cnet.com/8301-1_105-9680254-1.html?part=rss&amp;amp;tag=feed&amp;amp;subj=Crave" target="_blank"&gt;Ford Edge Uses Plug-in Technology&lt;/a&gt;
				&lt;br /&gt;The power train, which Ford calls its HySeries Drive, is a somewhat different design than past fuel cell efforts. The car's motor gets electricity from a 336-volt lithium-ion battery pack. The battery recharges from either a wall outlet or from its onboard hydrogen fuel cell. With a fully charged battery, the car will go for 25 miles before the hydrogen fuel cell kicks in. Because of the power train design, Ford could replace the hydrogen fuel cell and tank with any other method of generating electricity, such as a small diesel engine.&lt;/p&gt;
		&lt;p&gt;
				&lt;a href="http://www.businesscardland.com/home/" target="_blank"&gt;Businesscardland&lt;/a&gt;
				&lt;br /&gt;Makes business cards on line. Quick easy and effective. You can print them yourself using pre-cut Avery Business card paper or on your own paper using our cutting guides. Useful.&lt;/p&gt;
		&lt;p&gt;
				&lt;a href="http://www.smashingmagazine.com/2007/01/24/bookmarklets-favelets-and-snippets/" target="_blank"&gt;Bookmarklets, Favelets and Snippets&lt;/a&gt;
				&lt;br /&gt;Everything you never knew about bookmarks and favelets. From our good friends at &lt;a href="http://www.smashingmagazine.com/" target="_blank"&gt;Smashing Magazine&lt;/a&gt; so you know it's good.&lt;/p&gt;
		&lt;p&gt;
				&lt;a href="http://labs.live.com/photosynth/default.html" target="_blank"&gt;Microsoft Live Labs: Photosynth&lt;/a&gt;
				&lt;br /&gt;Photosynthtakes a large collection of photos of a place or an object, analyzes them for similarities, and then displays the photos in a reconstructed &lt;b&gt;three-dimensional space&lt;/b&gt;, showing you how each one relates to the next.&lt;/p&gt;
</content>
      <post-name>Links 2007-02-03</post-name>
      <categories>
        <category ref="14" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="c387dda1-f3c3-462c-a1e3-8a377fa1c74c" date-created="2007-02-01T00:46:54.9206242Z" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=c387dda1-f3c3-462c-a1e3-8a377fa1c74c" type="normal">
      <title>Writing for Deployment</title>
      <content>&lt;p&gt;One of the things I try to think about when coding is what I call "Writing for Deployment".  Too often I have encountered software that is difficult to install and configure. Most of the time, but not always, these are legacy systems that have matured over a long period of time. During this long gestation, changes are added that in and of themselves are seemingly simple, but taken in their aggregate cause headaches for customers and field technicians alike. Here are some of things I do to try to minimize deployment issues (many of these are Windows specific). &lt;/p&gt; &lt;p&gt;&lt;strong&gt;Deploy as a single binary&lt;/strong&gt;: This is the one I get beat up on the most, so I'll lead with it. If you can deploy your code as a single DLL or EXE, do it. &lt;strong&gt;&lt;img style="margin: 10px 0px 10px 15px" height="97" src="http://blueonionsoftware.com/Blog/Images/WindowsLiveWriter/WritingforDeployment_85D0/windows%5B9%5D.gif" width="168" align="right"&gt;&lt;/strong&gt;I get a lot of push back on this one and I'm always left a bit puzzled. The arguments are usually along the line of it's easier to patch or it will take too long to build. The patching argument sounds fine in theory, but in practice I have found that the the entire product is updated because of version numbers and labeling requirements. Also, most code is not as modular as it advertises. Invariably, a change in one place requires rebuilding all or most of the modules in the project. Taking too long to build is perhaps a better argument but my experience doesn't support it here either. A single target is easier to build, debug and deploy. In cases where you can't deploy as a single binary, then deploy with as few as you can get away it. A single DLL or EXE is ideal because its just harder for someone to mess it up. Either it's the old one or the new one. Not much confusion there.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;No registry:&lt;/strong&gt; The registry seems so handy and innocent, but don't go there. Registry settings cause all sorts of headaches. They require special privileges to modify, they're global which inhibits side by side deployment, they're difficult to undo usually requiring a sophisticated uninstall program (and again, special privileges). &lt;/p&gt; &lt;p&gt;&lt;strong&gt;Configuration files are optional:&lt;/strong&gt; This one drives me up the wall. Move a configuration file and the program goes south. If there's no configuration file, do the nice thing and fall back to some reasonable defaults. Worse still is the configuration file that points to other configuration files.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Allow side by side execution:&lt;/strong&gt; Users have good reasons to sometimes want multiple copies of your program on the same system. Also, allow older and newer versions to run at the same time.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Test your uninstall:&lt;/strong&gt; It's really annoying when I uninstall a program only to find file associations and menu items left over.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Think USB:&lt;/strong&gt; Strive to make your program run without an installer. Again, a single .EXE makes this easier. Also consider using Isolated Storage (.NET) if you have to store configuration information.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Ask few questions:&lt;/strong&gt; If you write an installer, you should ask as few questions as necessary. I hate having to make decisions about obscure program options I don't know anything about.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Always run:&lt;/strong&gt; Short of a nuclear strike, your program should run. If necessary items are missing, it should still run and degrade gracefully.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Embed resources:&lt;/strong&gt; This dovetails with the single binary. In .NET it's easy to embed resources. I really don't need to know your program has 57 different icons spread across 10 directories.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Silent install:&lt;/strong&gt; Installers should allow silent operation with options specified on the command line.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Set security:&lt;/strong&gt; This is mostly .NET again. Take a few minutes and add security descriptors to your assembly. Administrators will cheer you.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Use limited accounts for development:&lt;/strong&gt; This helps you find permission issues with your program early on. You can always "Run as" to run installers. &lt;/p&gt; &lt;p&gt;&lt;strong&gt;You're a guest on the system, behave appropriately:&lt;/strong&gt; Hey, it's not your computer. Be nice.&lt;/p&gt;</content>
      <post-name>Writing for Deployment</post-name>
      <categories>
        <category ref="8" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="6b46f01c-5e02-4ec0-b062-5189b3147c7b" date-created="2007-01-29T12:47:20.6670559Z" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=6b46f01c-5e02-4ec0-b062-5189b3147c7b" type="normal">
      <title>Links 2007-01-29</title>
      <content>&lt;p&gt;&lt;a href="http://www.curvycorners.net/index.php"&gt;Ultimate Rounded Corners&lt;/a&gt;&lt;br&gt;If you want super easy to maintain rounded corners that are fully anti-aliased with support for borders and background images and that look as good as graphically created ones then curvyCorners is for you.&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.toufee.com/"&gt;Create Flash Movies with Toufee's Free Flash Movie Maker!&lt;/a&gt;&lt;br&gt;Create &lt;strong&gt;flash movies&lt;/strong&gt; with your photos, audio and videos. &lt;strong&gt;No technical skills&lt;/strong&gt; required - it's all click and point. It's free.&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.smashingmagazine.com/2007/01/19/7-freefonts-you-shouldnt-have-missed/"&gt;5 Free Fonts You Shouldn’t Have Missed | Smashing Magazine&lt;/a&gt;&lt;br&gt;&lt;a href="http://www.philsfonts.com/freefont.html"&gt;District Thin&lt;/a&gt;, &lt;a href="http://www.kontrapunkt.dk/news/ddprize_typeface_of_the_year_2004"&gt;Kontrapunkt&lt;/a&gt; and &lt;a href="http://com4t-fff.seesaa.net/article/20901050.html"&gt;Com4t Fine Regular&lt;/a&gt; offer quality and can be used for serious online-presentations.&lt;/p&gt; &lt;p&gt;&lt;a href="http://csstype.com/"&gt;CSSTYPE. v2&lt;/a&gt;&lt;br&gt;This is an online tool for testing typography settings. It's "in browser" so you see immediately your changes render. Handy tool.&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.codinghorror.com/blog/archives/000771.html"&gt;Do Certifications Matter?&lt;/a&gt;&lt;br&gt;Jeff Atwood of Coding Horror comes down pretty hard on the whole certification issue. I don't think I would enjoy and interview with Mr. Atwood. Insightful as always.&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.newyorker.com/talk/content/articles/050905ta_talk_surowiecki"&gt;New York Restaurant Abolishes Tipping&lt;/a&gt;&lt;br&gt;Tipping habits in America are changing and some restaurants are abolishing them entirely. The article also discusses the history of tipping in the United States which started sometime after the Civil War. Interesting read.&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.smashingmagazine.com/2007/01/19/53-css-techniques-you-couldnt-live-without/"&gt;53 CSS-Techniques You Couldn’t Live Without&lt;/a&gt;&lt;br&gt;Over the last few years web-developers have written many articles about CSS and developed many useful techniques, which can save you a lot of time - of course, if you are able to find them in time. Below you’ll find a list of techniques we , as web-architects, really couldn’t live without. They are essential and they indeed make our life easier. Let’s take a look at &lt;strong&gt;53 CSS-based techniques you should always have ready to hand if you develop web-sites&lt;/strong&gt;.&lt;/p&gt; &lt;p&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/bb264518.aspx"&gt;Web Client Software Factory&lt;/a&gt;&lt;br&gt;Architects and developers can use the Web Client Software Factory to quickly incorporate many of the proven practices and patterns of building Web client applications. These practices and patterns have been identified during the development of many Web client applications and their components. More goodness from the folks at Microsoft.&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.newyankee.com/season19_promo.php"&gt;New Yankee Workshop - Season 19 Promo&lt;/a&gt;&lt;br&gt;I like to build furniture on occasion. It's a nice contrast to all this "techie" work I do. This video describes all the projects Norm Abrams will be building this season.&lt;/p&gt;</content>
      <post-name>Links 2007-01-29</post-name>
      <categories>
        <category ref="14" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="528af04c-3faa-4a3f-971a-3798306017a8" date-created="2007-01-24T12:22:09.1478949Z" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=528af04c-3faa-4a3f-971a-3798306017a8" type="normal">
      <title>AJAX : The Official Microsoft ASP.NET AJAX Site</title>
      <content>&lt;p&gt;ASP.NET &lt;a href="http://www.answers.com/topic/asp-net-ajax?method=26&amp;initiator=answertip:more"&gt;AJAX&lt;/a&gt; has just been officially released. ASP.NET AJAX is a &lt;a href="http://ajax.asp.net/downloads/default.aspx?tabid=47"&gt;free framework&lt;/a&gt; for quickly creating a new generation of more efficient, more interactive and highly-personalized Web experiences that work across all the most popular browsers.&lt;/p&gt; &lt;p&gt;There is a ton of high quality documentation which is always a given with Microsoft toolkits. The site also features &lt;a title="ASP.NET AJAX Control Toolkit sample website" href="http://ajax.asp.net/ajaxtoolkit/"&gt;live previews&lt;/a&gt; of the the toolkit controls. It's a great way to see some of the cool stuff things you can do with AJAX. The quality of the controls is a bit uneven however. Some controls are gorgeous while others are very basic. For  instance the Animation control produces some great effects but the rounded corners control does not support anti-aliasing which makes for some poor looking rounded boxes.&lt;/p&gt; &lt;p&gt;I'm planning on using this toolkit in several projects and reporting on my experiences along the way. Stay tuned!&lt;/p&gt; &lt;p&gt;&lt;a href="http://ajax.asp.net/default.aspx"&gt;Link to AJAX : The Official Microsoft ASP.NET AJAX Site&lt;/a&gt;&lt;/p&gt;</content>
      <post-name>AJAX : The Official Microsoft ASP.NET AJAX Site</post-name>
      <categories>
        <category ref="1" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="064632aa-cf58-47ca-8b32-b446b40a14a7" date-created="2007-01-24T00:31:03.6082268Z" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=064632aa-cf58-47ca-8b32-b446b40a14a7" type="normal">
      <title>Links 2007-01-23</title>
      <content>
		&lt;p&gt;
				&lt;a title="Dilbert Blog" href="http://dilbertblog.typepad.com/the_dilbert_blog/2007/01/better_off_losi.html"&gt;Dilbert Blog - Better off Losing?&lt;/a&gt;
				&lt;br /&gt;Which of these two statements, if believed to be true, would make the world a better place?&lt;br /&gt;1. There’s no point in attacking and occupying another country because it never turns out well.&lt;br /&gt;2. Sometimes wars of occupation turn out great!&lt;/p&gt;
		&lt;p&gt;
				&lt;a href="http://www.gotapi.com/"&gt;gotAPI.com - Reference for CSS, HTML, JavaScript, PHP, AJAX, SQL&lt;/a&gt;
				&lt;br /&gt;Click on the tag, get a nice, formatted definition of what it is. Useful, fast and not annoying. &lt;/p&gt;
		&lt;p&gt;
				&lt;a href="http://www.dontclick.it/"&gt;Don't Click It&lt;/a&gt;
				&lt;br /&gt;Interesting demonstration of a Web interface that does not requiring clicking to navigate. Relies heavily on roll overs. Fun and thought stimulating &lt;/p&gt;
		&lt;p&gt;
				&lt;a href="http://www.whatwg.org/"&gt;Web Hypertext Application Technology Working Group&lt;/a&gt;
				&lt;br /&gt;This group is working on extensions to HTML. They're goal is to make it easier to develop Web applications. HTML has been stagnant for way to long. Many of the extensions listed here are really exciting and interesting. If you're a web developer, its really worth a look. &lt;/p&gt;
		&lt;p&gt;
				&lt;a href="http://hamachi.cc/"&gt;Hamachi - One Cool VPN&lt;/a&gt;
				&lt;br /&gt;Hamachi is a zero configuration Virtual Private Network (VPN). I've been using it for a few weeks and it just rocks. It lets you setup private networks that work over the Internet. I've been using it to access my work computer from home. Unlike many VPN's, Hamachi exposes VPN functionality by adding an additional network connection. This is pure genius in my book. I don't have to surrender my current network connection to use this VPN. Cuts through firewalls like butter. Did I mention that it's free? &lt;/p&gt;
		&lt;p&gt;
				&lt;a href="http://www.iis.net/default.aspx?tabid=1000051"&gt;FastCGI for IIS&lt;/a&gt;
				&lt;br /&gt;Finally, a FastCGI implementation for IIS by Microsoft. The IIS FastCGI component enables popular application frameworks like PHP be hosted on the IIS web server in a high-performance and reliable way. &lt;/p&gt;
		&lt;p&gt;
				&lt;a href="http://blog.whatwg.org/html-vs-xhtml"&gt;HTML vs. XHTML - The WHATWG Blog&lt;/a&gt;
				&lt;br /&gt;I mentioned the Web Hypertext Application Technology Working Group above. This blog article points to some of the common sense simplifications they are proposing for HTML and XHTML. In this blog article, they discuss the &lt;doctype&gt;tag and how it is simplified in HTML5 and disappears entirely in XHTML.&lt;/doctype&gt;&lt;/p&gt;
		&lt;p&gt;
				&lt;a href="http://sweetie.sublink.ca/"&gt;Sweetie&lt;/a&gt;
				&lt;br /&gt;150+ clean and clear icons to use in your nifty web application.&lt;br /&gt;&lt;img height="83" alt="150+ clean and clear icons to use in your nifty web application" src="http://blueonionsoftware.com/Blog/Images/WindowsLiveWriter/Links20070123_10B49/icons%5B1%5D%5B4%5D.gif" width="382" /&gt;&lt;/p&gt;
		&lt;p&gt;
		&lt;/p&gt;
		&lt;p&gt;
		&lt;/p&gt;
</content>
      <post-name>Links 2007-01-23</post-name>
      <categories>
        <category ref="14" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="4a1fd3d8-03dc-454e-86f1-f2bbef300f35" date-created="2007-01-21T23:33:07.1446886Z" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=4a1fd3d8-03dc-454e-86f1-f2bbef300f35" type="normal">
      <title>Bloget Alpha 4 Released</title>
      <content>&lt;p&gt;&lt;img style="margin: 0px 0px 0px 10px" height="270" src="http://blueonionsoftware.com/Blog/Images/WindowsLiveWriter/BlogetAlpha4Released_C67C/dork%5B5%5D.png" width="287" align="right"&gt; Bloget, alpha 4 is out the door! Some of the changes include:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;An integrated log viewer  &lt;li&gt;Enclosures  &lt;li&gt;Upload Images  &lt;li&gt;Upload Attachments  &lt;li&gt;RSS Channel Images  &lt;li&gt;RSS Footers  &lt;li&gt;Additional template methods  &lt;li&gt;Really Simple Discovery  &lt;li&gt;SMTP Authorization  &lt;li&gt;The usual bug fixes and cleanups&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Alpha 5 is already being developed by our crack team here at Blue Onion Software (namely me and my cat Euclid). We're looking at adding &lt;a title="BlogML is an XML format for storing the entire content of a blog" href="http://BlogML.com"&gt;BlogML&lt;/a&gt; and time zones to the next release. Look for it next month.&lt;/p&gt; &lt;p&gt;Bloget is rapidly maturing. It's proven to be very reliable in my use (classic developer comment - works on my machine).  Check out the &lt;a title="View Bloget's User Guide" href="http://blueonionsoftware.com/Bloget/BlogetUserGuide.html"&gt;documentation&lt;/a&gt; and give it &lt;a title="Download Bloget Today!" href="http://blueonionsoftware.com/Downloads.aspx"&gt;try&lt;/a&gt;.  As always, send feedback!&lt;/p&gt; &lt;p&gt;- Mike&lt;/p&gt;</content>
      <post-name>Bloget Alpha 4 Released</post-name>
      <categories>
        <category ref="2" />
      </categories>
      <comments>
        <comment id="38706d20-0513-4666-b9b4-769343735dcb" date-created="2007-01-22T02:29:18.8616269Z" user-name="Darren Neimke" user-email="showusyourcode@hotmail.com">
          <title>RE: Bloget Alpha 4 Released</title>
          <content />
        </comment>
      </comments>
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="de134dbd-354a-44b5-ae52-ffce2b532823" date-created="2007-01-19T23:03:37.4126965Z" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=de134dbd-354a-44b5-ae52-ffce2b532823" type="normal">
      <title>Links 2007-01-19</title>
      <content>&lt;p&gt;&lt;a href="http://createafreewebsite.net/html-color-tool.html"&gt;Choose Color Schemes for your website using this free tool&lt;/a&gt;&lt;br&gt;Nice tool for picking complementary colors for a Web site. So simple, even I understand it.&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.metaglossary.com/"&gt;MetaGlossary&lt;/a&gt;&lt;br&gt;Find meaning, not just links.&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.madskristensen.dk/blog/PermaLink,guid,6da400e6-8c6e-4268-91aa-a1b8173e3a59.aspx"&gt;.NET slave - Block DoS attacks easily in ASP.NET&lt;/a&gt;&lt;br&gt;This module is a high performance and lightweight protection from DoS attacks and very easy to implement.&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.btxformfactor.com/item/35/1.php"&gt;Top Ten Reasons to Upgrade to Windows Vista&lt;/a&gt;&lt;br&gt;Microsoft has introduced a new level of desktop experience by making the system more secure, reliable and easier to manage.&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.cleancss.com/"&gt;CSS Formatter and Optimizer&lt;/a&gt;&lt;br&gt;CleanCSS is a powerful CSS optimizer and formatter. Basically, it takes your CSS code and makes it cleaner and more concise.&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.templateworld.com/free_templates.html"&gt;Free XHTML/CSS Website Templates - Template World&lt;/a&gt;&lt;br&gt;Nice looking Web 2.0 styled templates.&lt;/p&gt; &lt;p&gt;&lt;a href="http://lesliefranke.com/files/reference/csscheatsheet.html"&gt;CSS CHEAT SHEET&lt;/a&gt;&lt;br&gt;One page concise summary. The information in this guide seems easier to locate than others I've used. Worth the bookmark.&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.punksoftware.com/download?project=UberIcon&amp;ver=1.0.2"&gt;UberIcon&lt;/a&gt;&lt;br&gt;This is one of those fun desktop enhancements I never seem to tire of. It adds a quick (non-annoying) animation to your icons when you double-click them similar to what Macs do. What I like about it is that it gives you immediate visual feedback that you have activated whatever it is you clicked, which is nice when the program you're running is a little slow to load. A real gem.&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/bclteam/archive/2007/01/16/introducing-system-numeric-biginteger-inbar-gazit.aspx"&gt;BCL Team Blog : Introducing: System.Numeric.BigInteger&lt;/a&gt;&lt;br&gt;They're large! No, they're huge! No, they're, um-er, Big Integers. Have you ever needed a really huge number?  So big it just couldn't fit into any other base-type in the framework?  Well, no problem anymore, just use the new BigInteger type. You can now have the ability to use integers of any arbitrary size, so they can exponentiate until the cows come home... or memory runs out, whichever comes first :-)&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.electronichouse.com/article/star_trek_theater/"&gt;The Homemade Star Trek Theater&lt;/a&gt;&lt;br&gt;Make it so number one! Really cool idea for a home theater. Looks like bridge of the Enterprise! I especially like the windows on the walls that look out into space.&lt;/p&gt; &lt;p&gt;&lt;a href="http://cg.scs.carleton.ca/~morin/misc/sortalg/"&gt;The Improved Sorting Algorithm Demo&lt;/a&gt;&lt;br&gt;This page has visualizations of some comparison based sorting algorithms. The quick sort, bubble sort and cocktail shaker sort are due to the good folks at Sun Microsystems. The original SortItem applet was written by James Gosling. From what I can see, the algorithms are sorted worst to best. Pick an algorithm and watch a visual animation of it sorting a list. The speed and pattern of the animation gives you a good clue to how the algorithm works and it's efficiency. Good clean Geek fun for the entire family!&lt;/p&gt;</content>
      <post-name>Links 2007-01-19</post-name>
      <categories>
        <category ref="14" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="8136c654-f6fc-4855-9f80-a67c6c4f5422" date-created="2007-01-19T21:23:42.2219964Z" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=8136c654-f6fc-4855-9f80-a67c6c4f5422" type="normal">
      <title>The example domain</title>
      <content>Interesting tip about example domains.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.madskristensen.dk/blog/The+Example+Domain.aspx"&gt;read more&lt;/a&gt; | &lt;a href="http://digg.com/programming/The_example_domain"&gt;digg story&lt;/a&gt;</content>
      <post-name>The example domain</post-name>
      <categories>
        <category ref="8" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="df0c49ee-da6a-4134-a0aa-b415a00e0093" date-created="2007-01-18T23:23:29.4535235Z" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=df0c49ee-da6a-4134-a0aa-b415a00e0093" type="normal">
      <title>Call Stack Tips</title>
      <content>
		&lt;p&gt;
		&lt;/p&gt;
		&lt;p&gt;
				&lt;img style="margin: 0px 0px 0px 20px;" alt="Visual Studio 2005 Banner" src="http://blueonionsoftware.com/Blog/Images/WindowsLiveWriter/CallStackTips_CC77/right_bnr_vstudio%5B5%5D.gif" align="right" height="46" width="175" /&gt; Just in case you've never tried, it - the next time you're looking at a call stack while stopped at a break point in &lt;a href="http://msdn2.microsoft.com/en-us/vstudio/default.aspx"&gt;Visual Studio 2005&lt;/a&gt;, try&lt;i&gt; right clicking&lt;/i&gt; in the call stack window and investigating some of the context menu options.&lt;/p&gt;
		&lt;p&gt;Here's some that stand out.&lt;/p&gt;
		&lt;p&gt;Discovering the first one gave me a some good insight into why .NET control events were being fired without my, or my users, instigation.  It is especially useful in combo with &lt;a href="http://www.aisto.com/roeder/dotnet/"&gt;Reflector. .NET&lt;/a&gt;.&lt;/p&gt;
		&lt;p&gt;
				&lt;b&gt;Show External Code&lt;br /&gt;&lt;/b&gt;Changes those single line, obtuse call stack phrases "[External Code]" into illuminating exposés of internal .NET assembly method call stacks, complete with cracked message and parameter info. &lt;/p&gt;
		&lt;p&gt;
				&lt;b&gt;Include Calls To / From Other Threads&lt;br /&gt;&lt;/b&gt;Can provide deeper insight into how your breakpoint was reached in a multithreading scenario. &lt;/p&gt;
		&lt;p&gt;
				&lt;b&gt;The Load Symbols Menu&lt;br /&gt;&lt;/b&gt;This section of the menu provides runtime access to the debug symbol configuration.  This is specifically useful in mixed mode apps. You should download the &lt;b&gt;&lt;a href="http://www.microsoft.com/whdc/devtools/debugging/default.mspx"&gt;Debugging Tools For Windows&lt;/a&gt;&lt;/b&gt; from Microsoft and follow the installation instructions.&lt;/p&gt;
		&lt;p&gt;Basically, you want to configure VS to download and cache the .PDB files which provide the symbols for the OS DLLs you're using - this capability provides much more accurate and useful stack traces and debug step execution.&lt;/p&gt;
		&lt;p&gt;You should generally update to the most current version of the 32 bit Debugging Tools for Windows - the current version is &lt;b&gt;6.6.7.5&lt;/b&gt;, July 18, 2006.&lt;/p&gt;
		&lt;p&gt;
				&lt;b&gt;VS Config&lt;br /&gt;&lt;/b&gt;In VS, go to Tools / Options / Debugging / Symbols and add the following to the "Symbol file (.pdb) locations" (note, this is also accessible from the Call Stack window context menu) &lt;/p&gt;
		&lt;p&gt;
				&lt;a href="http://msdl.microsoft.com/download/symbols"&gt;
						&lt;u&gt;http://msdl.microsoft.com/download/symbols&lt;/u&gt;
				&lt;/a&gt; &lt;/p&gt;
		&lt;p&gt;Specify a local directory to store the cached .pdb files. My symbol cache consumes approximately 260 MB, just for references.  You may also want to checkmark the option "Load symbols using the update settings when this dialog is closed".&lt;/p&gt;
		&lt;p&gt;After debugging my app a few times, I returned to this dialog and disabled the [x] next to the symbol path in the "Symbol file (.pdb) locations" list - the constant checking for newer symbols slows things down a bit, and after a few common sessions you've probably downloaded the symbols for the system DLLs you most commonly interact with anyway. YMMV, depending on how scattered your debugging needs are.&lt;/p&gt;
</content>
      <post-name>Call Stack Tips</post-name>
      <categories>
        <category ref="4" />
        <category ref="8" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="a0bfe9a8-2b4d-46b8-baf2-7cdc8c873f2a" date-created="2007-01-18T00:37:00.0134102Z" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=a0bfe9a8-2b4d-46b8-baf2-7cdc8c873f2a" type="normal">
      <title>Links 2007-01-17</title>
      <content>
		&lt;p&gt;
				&lt;a href="http://www.boingboing.net/2007/01/13/playboy_playmates_pr.html"&gt;Playboy Playmates pranked into Apollo 12 mission checklists&lt;/a&gt;
				&lt;br /&gt;Apparently the boys at NASA slipped a few interesting items into the Apollo crew's checklists. Even engineers have a sense of humor.&lt;/p&gt;
		&lt;p&gt;
				&lt;a href="http://www.codinghorror.com/blog/archives/000768.html"&gt;The Problem With C++&lt;/a&gt; - Jeff Atwood, Coding Horror&lt;br /&gt;MIT's Technology Review recently interviewed &lt;a href="http://en.wikipedia.org/wiki/Bjarne_Stroustrup"&gt;Bjarne Stroustrup&lt;/a&gt; in a two-part article (&lt;a href="http://www.technologyreview.com/InfoTech/17831/"&gt;part one&lt;/a&gt;, &lt;a href="http://www.technologyreview.com/Infotech/17868/"&gt;part two&lt;/a&gt;). The most important question to ask about any language these days isn't how fast it is, or how general it is, but &lt;b&gt;how well does it protect you from yourself?&lt;/b&gt;&lt;/p&gt;
		&lt;p&gt;
				&lt;a href="http://www.codinghorror.com/blog/archives/000224.html"&gt;The One Trillion Dollar Development Pyramid&lt;/a&gt; - Jeff Atwood, Coding Horror&lt;br /&gt;We're all participants, willing or not, in &lt;b&gt;the One Trillion Dollar Development Pyramid&lt;/b&gt;. &lt;/p&gt;
		&lt;ol&gt;
				&lt;li&gt;
						&lt;b&gt;Dozens&lt;/b&gt;. The developers working on your kernel should be &lt;a href="http://www.codinghorror.com/blog/archives/000060.html"&gt;Dave Cutler-esque geniuses&lt;/a&gt;. There aren't many guys playing the game at this level. Copying UNIX over and over is laudable enough, but developing an entire OS architecture from scratch is the ultimate in hardcore development. 
&lt;/li&gt;
				&lt;li&gt;
						&lt;b&gt;Hundreds&lt;/b&gt;. Those kernel developers support several hundred OS developers, who should be the best of the best, your &lt;a href="http://weblogs.asp.net/oldnewthing/"&gt;Raymond Chens&lt;/a&gt;, if you will. They create the OS infrastructure that makes everything else possible. 
&lt;/li&gt;
				&lt;li&gt;
						&lt;b&gt;Thousands&lt;/b&gt;. Those OS developers support a thousand framework developers. Highly talented, handpicked developers building abstract APIs that enable huge productivity gains. 
&lt;/li&gt;
				&lt;li&gt;
						&lt;b&gt;Millions.&lt;/b&gt; The framework supports millions of developers of wildly disparate skill levels: everything from rank beginner to near-genius. And they're pounding out trillions of lines of code on every imaginable kind of application. &lt;/li&gt;
		&lt;/ol&gt;
		&lt;p&gt;
				&lt;a href="http://www.snap.com/about/spa_faq.php"&gt;Snap Preview Anywhere&lt;/a&gt;
				&lt;br /&gt;Cool little popup preview's are easy to add to any Web site. Takes one line of JavaScript.&lt;/p&gt;
		&lt;p&gt;
				&lt;a href="http://haacked.com/archive/2007/01/14/6_Software_Tips_For_Hardware_Makers.aspx"&gt;Six Software Tips for Hardware Makers&lt;/a&gt; - Phil Hacck's blog&lt;br /&gt;Phil rants about the poor quality of software that ships with personal computers (think Dell's crapware). Thing is, they're good tips for any software developer.&lt;/p&gt;
		&lt;p&gt;
				&lt;img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; MARGIN: 0px 0px 0px 15px; BORDER-RIGHT-WIDTH: 0px" height="135" src="http://blueonionsoftware.com/Blog/Images/WindowsLiveWriter/Links20070117_10D0D/speedtest%5B4%5D.png" width="300" align="right" border="0" /&gt;
				&lt;a href="http://www.speedtest.net/"&gt;The Global Broadband Speed Test&lt;/a&gt;
				&lt;br /&gt;Broadband speed test with some very nice animations depicting the process. The image at the right displays my local cable service test results.&lt;/p&gt;
		&lt;p&gt;
				&lt;a href="http://www.sodaplay.com/constructor/player.htm"&gt;sodacontructor&lt;/a&gt;
				&lt;br /&gt;Playful, mechanical stick figures that you control.&lt;/p&gt;
		&lt;p&gt;
				&lt;a href="http://www.typorganism.com/asciiomatic/"&gt;t.y.p.o.r.g.a.n.i.s.m : ASCII-O-Matic&lt;/a&gt;
				&lt;br /&gt;Online generator renders any image in ASCII characters. Reminds of the days of dialup bulletin boards.&lt;/p&gt;
		&lt;p&gt;
				&lt;a href="http://www.micro.magnet.fsu.edu/primer/java/scienceopticsu/powersof10/"&gt;The Universe Within&lt;/a&gt;
				&lt;br /&gt;This is a classic animated illustration of the scale of the universe in powers of ten. You start from the farthest reaches of the universe and progressively zoom to the sub atomic level. Fun for the kids.&lt;/p&gt;
</content>
      <post-name>Links 2007-01-17</post-name>
      <categories>
        <category ref="14" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="2d8de885-53b6-4629-82a7-3257c0dddf35" date-created="2007-01-15T23:16:57.2738099Z" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=2d8de885-53b6-4629-82a7-3257c0dddf35" type="normal">
      <title>Links - 2007-01-15</title>
      <content>&lt;p&gt;&lt;a href="http://www.infidelguy.com/members/Neil/comics/0.gif"&gt;How to Argue Like a Jackass&lt;/a&gt;&lt;br&gt;Five easy steps you need to master to argue like a creationist.&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.smashingmagazine.com/2007/01/12/free-css-layouts-and-templates/"&gt;Free CSS Layouts And Templates&lt;/a&gt;&lt;br&gt;Smashing Magazine has some nice layouts here. This blog generally contains high quality content.&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.smashingmagazine.com/2006/09/03/symbols-buttons-and-icons-for-free/"&gt;Symbols, Buttons and Icons For Free&lt;/a&gt;&lt;br&gt;Again, Smasing magazine presents a &lt;u&gt;very nice&lt;/u&gt; collection here.&lt;/p&gt; &lt;p&gt;&lt;a title=".NET Application Extensibility" href="http://msdn.microsoft.com/msdnmag/issues/07/02/CLRInsideOut/default.aspx"&gt;MSDN - CLR Inside Out&lt;/a&gt;&lt;br&gt;Introducing the new System.AddIn namespace in the Base Class Library (BCL). This article introduces you to our APIs and walks through a sample application hosting add-ins.&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.smashingmagazine.com/2007/01/13/30-dark-designs-you-shouldve-seen/"&gt;30 Dark Designs You Should’ve Seen&lt;/a&gt;&lt;br&gt;More goodness for our friends at Smashing Magazine. This time they describe using dark colors Web sites designs.&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.smashingmagazine.com/2006/12/19/50-beautiful-css-based-web-designs-in-2006/"&gt;50 Beautiful CSS-Based Web-Designs in 2006&lt;/a&gt;&lt;br&gt;As you can see, I've been spending a fair bit of time on the Smashing Magazine Web site. Great designs!&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.codinghorror.com/blog/"&gt;The Power of Defaults&lt;/a&gt;&lt;br&gt;Defaults are arguably the most important design decisions you'll ever make as a software developer.&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.codinghorror.com/blog/archives/000767.html"&gt;If It's Not in Google, Does Your Website Really Exist?&lt;/a&gt;&lt;br&gt;&lt;b&gt;Most businesses on the net get 70% of their traffic from Google.&lt;/b&gt; These business are not competitors with Google, they are its partners, and have an interest in driving Google's success. Google has made partners of us all.&lt;/p&gt; &lt;p&gt;&lt;a href="http://faculty.washington.edu/smcohen/320/Kilogram.htm"&gt;Scientists Struggling to Make the Kilogram Right Again&lt;/a&gt;&lt;br&gt;The kilogram is defined by a platinum-iridium cylinder, cast in England in 1889. No one knows why it is shedding weight, at least in comparison with other reference weights, but the change has spurred an international search for a more stable definition.&lt;/p&gt;</content>
      <post-name>Links - 2007-01-15</post-name>
      <categories>
        <category ref="14" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="26c5ca67-1216-4f5d-b304-d35c35785b39" date-created="2007-01-14T14:03:59.6224707Z" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=26c5ca67-1216-4f5d-b304-d35c35785b39" type="normal">
      <title>Ford Airstream concept: a shiny, hydrogen-powered PHEV funmobile</title>
      <content>&lt;p&gt;&lt;a title="AutoblogGreen" href="http://blueonionsoftware.com/Blog/Images/WindowsLiveWriter/FordAirstreamconceptashinyhydrogenpowere_7D5E/fordairstreamconcept_05%5B2%5D.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; margin: 0px 20px 10px 0px; border-right-width: 0px" height="156" src="http://blueonionsoftware.com/Blog/Images/WindowsLiveWriter/FordAirstreamconceptashinyhydrogenpowere_7D5E/fordairstreamconcept_05_thumb.jpg" width="240" align="left" border="0"&gt; AutoblogGreen&lt;/a&gt; has an article on Ford's new concept vehicle. It wins my vote for one of the ugliest concept vehicles I've ever seen. One thing did catch my eye however.&lt;/p&gt; &lt;blockquote style="background: #f0f8ff"&gt; &lt;p&gt;If we had one of these things now, the first thing we're do is figure out is how to operate the passenger seat blogging tools. Yes, there is built-in blogging from the Airstream concept via a Sharp dual-view screen in the center of the instrument panel. Both the driver and front-seat occupant can also see views from the onboard camera.&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Yep, blogging comes to driving. I can see it now: "Made what I would call the perfect right hand turn today at the corner of Elm and 5th. You had to be there to believe it"&lt;/p&gt; &lt;p&gt;Great image gallery and full specs are on the site as well.&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="605EEA63-B54B-4e6d-A290-F5E9E8229FC1:3758dfc1-d07d-4a78-bc63-17a345a6c1cf" contenteditable="false" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;/div&gt;</content>
      <post-name>Ford Airstream concept: a shiny, hydrogen-powered PHEV funmobile</post-name>
      <categories>
        <category ref="10" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="c73d58e1-84ec-4345-8976-daf234759d09" date-created="2007-01-13T16:28:50.7193689Z" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=c73d58e1-84ec-4345-8976-daf234759d09" type="normal">
      <title>ASP.NET Data Binding Expression Syntax Tip</title>
      <content>
		&lt;p&gt;
				&lt;a title="Bloget, An ASP.NET Blog Control" href="http://blueonionsoftware.com/Bloget.aspx"&gt;Bloget™&lt;/a&gt; uses ASP.NET's built in &lt;a href="http://msdn2.microsoft.com/en-us/library/ms178657.aspxTemplated%20Server%20Control%20Example"&gt;template syntax&lt;/a&gt; for customization (other ASP.NET templated server controls include &lt;a title="Repeater Server Control" href="http://msdn2.microsoft.com/en-us/library/system.web.ui.webcontrols.repeater.aspx"&gt;Repeater&lt;/a&gt; and &lt;a title="GridView Server Control" href="http://msdn2.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.aspx"&gt;GridView&lt;/a&gt;). It's one of those killer ASP.NET features (IMHO) that doesn't get enough press. Coupled with data binding, it makes for a formidable template system that I use to develop Bloget blogs. Recently however, I stumbled trying to do something seemingly simple. First, however, let's quickly review the &lt;a href="http://msdn2.microsoft.com/en-us/library/ms178366.aspx"&gt;Data Binding Syntax&lt;/a&gt; in ASP.NET&lt;/p&gt;
		&lt;pre&gt;&amp;lt;asp:Hyperlink NavigateUrl='&amp;lt;%# Container.ItemPermaLink %&amp;gt;'&lt;br /&gt;&lt;asp:hyperlink navigateurl="&amp;lt;%# Container.ItemPermaLink %&amp;gt;"&gt;  runat="server"&amp;gt;permalink&lt;/asp:hyperlink&gt;&amp;lt;/asp:HyperLink&amp;gt;&lt;/pre&gt;
		&lt;p&gt;This is an example from a Bloget template I'm developing. The &lt;strong&gt;&amp;lt;%# %&amp;gt;&lt;/strong&gt; contains a &lt;em&gt;data binding expression&lt;/em&gt;. The &lt;strong&gt;Container&lt;/strong&gt; is the naming container that Bloget is hosted in and is the standard way to access data bound objects in a template. When the template is realized, &lt;strong&gt;Container.ItemPermaLink&lt;/strong&gt; will expand to the actual permalink for the item. So far so simple.&lt;/p&gt;
		&lt;p&gt;Where I stumbled was when I wanted to build a custom link to Digg, a popular bookmarking site. The format of the URL to submit a link is as follows:&lt;/p&gt;
		&lt;pre&gt;http://digg.com/submit?phase=2&amp;amp;url=&amp;lt;link&amp;gt;&amp;amp;title=&amp;lt;title&amp;gt;&lt;/pre&gt;
		&lt;p&gt;The &amp;lt;link&amp;gt; and &amp;lt;title&amp;gt; portions are replaced by the link and title 
of the blog article at runtime. The documentation for &lt;a href="http://msdn2.microsoft.com/en-us/library/ms178366.aspx"&gt;Data Binding Expressions&lt;/a&gt; and every &lt;a title="How to: Bind to Data in a Templated Control" href="http://msdn2.microsoft.com/en-us/library/95k0273d.aspx"&gt;example&lt;/a&gt; I could find suggest that only a &lt;em&gt;data binding expression&lt;/em&gt; can be contained in the &lt;strong&gt;&amp;lt;%# %&amp;gt;&lt;/strong&gt; portion. Well I'm here to say it ain't so! You can actually use C# (or VB) in these expressions. It may be common knowledge, but if it is, I couldn't find it. Armed with this new knowledge, it becomes straightforward to build the link.&lt;/p&gt;
		&lt;pre&gt;&amp;lt;asp:HyperLink NavigateURL='&amp;lt;%# string.Format(&lt;br /&gt;  "http://digg.com/submit?phase=2&amp;amp;amp;url={0}&amp;amp;amp;title={1}",&lt;br /&gt;  Container.ItemPermaLink, Container.ItemTitleUrlEncoded) %&amp;gt;'&lt;br /&gt;&lt;asp:hyperlink navigateurl="&amp;lt;%# string.Format(&amp;lt;br&amp;gt;  &amp;quot;http://digg.com/submit?phase=2&amp;amp;url={0}&amp;amp;title={1}&amp;quot;,&amp;lt;br&amp;gt;  Container.ItemPermaLink, Container.ItemTitleUrlEncoded) %&amp;gt;"&gt;  runat="server"&amp;gt;Digg this&lt;/asp:hyperlink&gt;!&amp;lt;/asp:HyperLink&amp;gt;&lt;/pre&gt;
		&lt;p&gt;This works fine in ASP.NET 2.0. I don't use ASP.NET 1.1 so your mileage may vary.&lt;/p&gt;
		&lt;div class="wlWriterSmartContent" id="0767317B-992E-4b12-91E0-4F059A8CECA8:b485632c-b6ce-4d4b-8d2a-bab7f8ab63b9" contenteditable="false" style="margin: 0px; padding: 0px; display: inline;"&gt;Technorati tags: &lt;a href="http://technorati.com/tags/ASP.NET" rel="tag"&gt;ASP.NET&lt;/a&gt;, &lt;a href="http://technorati.com/tags/C#" rel="tag"&gt;C#&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Bloget" rel="tag"&gt;Bloget&lt;/a&gt;&lt;/div&gt;
</content>
      <post-name>ASP.NET Data Binding Expression Syntax Tip</post-name>
      <categories>
        <category ref="1" />
        <category ref="2" />
        <category ref="4" />
        <category ref="8" />
      </categories>
      <comments>
        <comment id="0b68c791-b70b-4c2d-b2a8-8840e28f3835" date-created="2007-02-09T17:37:06.4405632Z" user-name="zcaf qrbvpgfe" user-email="csirhldx@mail.com">
          <title>brne tipk</title>
          <content />
        </comment>
      </comments>
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="a8445ac4-21db-4425-928e-6d58cf3d45f7" date-created="2007-01-12T12:47:48.4885188Z" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=a8445ac4-21db-4425-928e-6d58cf3d45f7" type="normal">
      <title>Links - 2007-01-12</title>
      <content>
		&lt;img style="margin: 0px 0px 0px 15px;" src="http://blueonionsoftware.com/Blog/Images/WindowsLiveWriter/C3.0Vidoes_F4CC/docarrow%5B8%5D.jpg" align="right" /&gt;
		&lt;p&gt;Here's a list of links I found interesting:&lt;/p&gt;
		&lt;p&gt;
				&lt;a title="Showing Hyperlink Cues with CSS" href="http://www.askthecssguy.com/2006/12/showing_hyperlink_cues_with_cs_1.html"&gt;Showing Hyperlink Cues with CSS&lt;/a&gt;
				&lt;br /&gt;How to display helpful icons in hyperlinks automatically&lt;/p&gt;
		&lt;p&gt;
				&lt;a title="Will it Blend?" href="http://www.willitblend.com/"&gt;Will it Blend?&lt;/a&gt;
				&lt;br /&gt;Hilarious videos of unusual items blended (think golf clubs, ipods)&lt;/p&gt;
		&lt;p&gt;
				&lt;a title="How Secure Is Your Wi-Fi Connection?" href="http://pogue.blogs.nytimes.com/2007/01/04/04pogue-email/"&gt;How Secure Is Your Wi-Fi Connection?&lt;br /&gt;&lt;/a&gt;Sobering view of the security of wireless connections&lt;/p&gt;
		&lt;p&gt;
				&lt;a title="Quest for the perfect email regular expression" href="http://blog.krugle.com/?p=208"&gt;Quest for the perfect email regular expression&lt;/a&gt;
				&lt;br /&gt;Geeky, but useful&lt;/p&gt;
		&lt;p&gt;
				&lt;a title=".NET Cheat Sheets" href="http://john-sheehan.com/blog/index.php/net-cheat-sheets/"&gt;.NET Cheat Sheets&lt;br /&gt;&lt;/a&gt;Great references in nice printable form&lt;/p&gt;
		&lt;p&gt;
				&lt;a title="Meet My New Favorite Text Editor" href="http://ryanfarley.com/blog/archive/2006/10/09/34249.aspx"&gt;Meet My New Favorite Text Editor&lt;/a&gt;
				&lt;br /&gt;Text editor I've never heard of. Looks interesting&lt;/p&gt;
		&lt;p&gt;
				&lt;a title="LetterPop - Make Creative Newsletters Online for Free" href="http://www.letterpop.com/"&gt;LetterPop - Make Creative Newsletters Online for Free&lt;br /&gt;&lt;/a&gt;Fun, free, cool.&lt;/p&gt;
		&lt;p&gt;
				&lt;a href="http://www.codeproject.com/useritems/ASPNET_JS_Calendar.asp"&gt;DaintyDate - The best open source datepicker!&lt;/a&gt;
				&lt;br /&gt;I've needed one of these for Bloget&lt;/p&gt;
		&lt;p&gt;
				&lt;a href="http://granell.net/martin/Posts/Post.aspx?postId=195"&gt;.NET User interface for Tracking down managed memory leaks&lt;/a&gt;
				&lt;br /&gt;If you program in .NET, you'll want to read this.&lt;/p&gt;
		&lt;p&gt;
				&lt;a href="http://www.manoli.net/csharpformat/"&gt;Online C# Code Formatter&lt;/a&gt;
				&lt;br /&gt;Really nice. Includes source. I'm thinking of using it in Bloget&lt;/p&gt;
		&lt;p&gt;
				&lt;a href="http://crave.cnet.com/8301-1_105-9677020-1.html?part=rss&amp;amp;tag=feed&amp;amp;subj=Crave"&gt;Get TiVo without a TiVo box&lt;br /&gt;&lt;/a&gt;Comcast will soon be delivering Tivo to their own DVR boxes&lt;/p&gt;
		&lt;p&gt;
				&lt;a href="http://mcpmag.com/columns/article.asp?EditorialsID=1565"&gt;It Pays To Be Sharp-C#&lt;/a&gt;
				&lt;br /&gt;William F. Zacherman's opinion (I agree)&lt;/p&gt;
		&lt;p&gt;
				&lt;a href="http://www.phdcomics.com/comics.php?f=807"&gt;Momofuku Ando (1910-2007)&lt;br /&gt;&lt;/a&gt;Cool comic/tribute about the inventor of Ramen Noodles!&lt;/p&gt;
</content>
      <post-name>Links - 2007-01-12</post-name>
      <categories>
        <category ref="14" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="eaa68079-a58e-4ba8-84fc-1068b1969ec4" date-created="2007-01-07T14:45:39.1159672Z" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=eaa68079-a58e-4ba8-84fc-1068b1969ec4" type="normal">
      <title>GM Resurrects Its Electric Car (with Tweaks)</title>
      <content>&lt;p&gt;&lt;a title="Scientific American" href="http://www.sciam.com/article.cfm?chanID=sa004&amp;articleID=EE568144-E7F2-99DF-313C5C52D14CAD32"&gt;Scientific American&lt;/a&gt; is running an article on GM's new electric car. I'm convinced that the &lt;a href="http://blueonionsoftware.com/Blog.aspx?bloget_mode=View&amp;bloget_item=18dd72fd-0854-41c0-a603-7d2379421129"&gt;near to medium term future of cars is electric&lt;/a&gt;. GM's introduction goes one step closer to that vision. And I love the name, "&lt;strong&gt;Volt&lt;/strong&gt;".&lt;/p&gt; &lt;blockquote style="background: #f0f8ff"&gt; &lt;p&gt;Although the Volt concept, which is being introduced today at Detroit's North American Auto Show, is a kind of hybrid vehicle, the design emphasizes electric battery rather than gasoline engine operation. The new design features no direct mechanical link between the gas-powered engine and the electric drive train.&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;For someone like me who drives less than 40 miles a day on average, an all electric vehicle is very appealing. It can easily be charged over night in the garage. And in short, commuter type trips, electrics really shine. According to the article:&lt;/p&gt; &lt;blockquote style="background: #f0f8ff"&gt; &lt;p&gt;Most daily commuters in the 40-mile-a-day classification will get the equivalent of 150 mpg&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&lt;a href="http://blueonionsoftware.com/Blog/Images/WindowsLiveWriter/GMResurrectsItsElectricCarwithTweaks_80B8/chevyvolt%5B4%5D.gif" atomicselection="true"&gt;&lt;img style="margin: 0px 20px 0px 0px" height="133" alt="Chevy Volt concept vehicle" src="http://blueonionsoftware.com/Blog/Images/WindowsLiveWriter/GMResurrectsItsElectricCarwithTweaks_80B8/chevyvolt_thumb%5B2%5D.gif" width="200" align="left"&gt;&lt;/a&gt; Yeah baby, that's what I want. With my driving style, I might only have to tank up a &lt;strong&gt;couple times a year&lt;/strong&gt;. Electric drive trains also have the advantage of being "&lt;strong&gt;energy source neutral&lt;/strong&gt;". The electricity can be generated from a variety of sources including fuel cells, solar, small diesels, etc. It makes for a much more flexible platform to build hybrid technologies on. For instance, &lt;a title="New World Record Achieved in Solar Cell Technology" href="http://www.energy.gov/news/4503.htm"&gt;solar cells have made large gains recently in efficiency&lt;/a&gt;. Many cars sit all day in parking lots while their owners are at work. I wonder out much energy could be recovered by adding a solar array to the roof of the vehicle? I could see adding a solar array to the roof of my garage as a charging source as well. I can't wait to drive one.&lt;/p&gt;</content>
      <post-name>GM Resurrects Its Electric Car (with Tweaks)</post-name>
      <categories>
        <category ref="10" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="9d9e7dca-4680-4a09-8dc7-d90008a98202" date-created="2007-01-07T13:57:51.3330622Z" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=9d9e7dca-4680-4a09-8dc7-d90008a98202" type="normal">
      <title>Time for a Change</title>
      <content>&lt;p&gt;&lt;img style="margin: 0px 0px 0px 20px" src="http://blueonionsoftware.com/Products/calendar.png" align="right"&gt; Having written a few calendar programs over the years I've become more than aware of some of the oddities of the Gregorian calendar system. According to this &lt;a title="Smithsonian article" href="http://www.smithsonianmagazine.com/issues/2007/january/calendar.php"&gt;Smithsonian article&lt;/a&gt;, Richard Conn Henry, a Johns Hopkins Professor, wants to change all that. His calendar proposal is not all that different from other proposals I've seen. Using computer programs and mathematical formulas, Henry has created a standard calendar that is identical from year to year. It is twelve months long and consists of 364 days. January 1, no matter the year, would always fall on a Sunday. So would Christmas.&lt;/p&gt; &lt;p&gt;Calendar reforms are often rejected on religious grounds but surprisingly, there's another objection.&lt;/p&gt; &lt;blockquote style="background: #f0f8ff"&gt; &lt;p&gt;And what is the biggest objection that Henry has encountered so far? "Your birthday will always fall on the same day of the week. An astonishing number of people don't like that. They like the variety."&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;I guess you really can't have your cake and eat it to.&lt;/p&gt;</content>
      <post-name>Time for a Change</post-name>
      <categories>
        <category ref="6" />
        <category ref="11" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="c2f31435-ec0a-44f6-bc2e-a8a8fcc86cce" date-created="2007-01-06T22:41:03.3581305Z" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=c2f31435-ec0a-44f6-bc2e-a8a8fcc86cce" type="normal">
      <title>C# 3.0 Videos</title>
      <content>&lt;p&gt;&lt;a href="http://download.microsoft.com/download/5/8/6/5868081c-68aa-40de-9a45-a3803d8134b8/csharp_3.0_specification.doc" target="_new" atomicselection="true"&gt;&lt;img style="border-right: 0px; border-top: 0px; margin: 0px 15px 0px 0px; border-left: 0px; border-bottom: 0px" height="60" src="http://blueonionsoftware.com/Blog/Images/WindowsLiveWriter/C3.0Vidoes_F4CC/docarrow%5B8%5D.jpg" width="80" align="left" border="0"&gt;&lt;/a&gt; &lt;font size="5"&gt;C# 3.0&lt;/font&gt; introduces several language extensions that build on C# 2.0 to support the creation and use of higher order, functional style class libraries. The extensions enable construction of compositional APIs that have equal expressive power of query languages in domains such as relational databases and XML.&lt;/p&gt; &lt;p&gt;Buried in the &lt;a href="http://msdn.microsoft.com/"&gt;Microsoft MSDN&lt;/a&gt; site are some very good videos on many of the &lt;a href="http://msdn2.microsoft.com/en-us/vcsharp/aa336745.aspx"&gt;new features in C# 3.0&lt;/a&gt;. There are four 5-minute segments that demonstrate succinctly how to use new features including extension methods, anonymous types and &lt;a href="http://msdn2.microsoft.com/en-us/netframework/aa904594.aspx"&gt;LINQ&lt;/a&gt;. If you're the least bit curious about what's new in C#, these videos are for you.&lt;/p&gt; &lt;p&gt;&lt;a href="http://download.microsoft.com/download/4/7/0/4703eba2-78c4-4b09-8912-69f6c38d3a56/languageenhancements.wmv"&gt;&lt;strong&gt;C# 3.0 Language Enhancements in action&lt;/strong&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&lt;a href="http://download.microsoft.com/download/4/7/0/4703eba2-78c4-4b09-8912-69f6c38d3a56/linq.wmv"&gt;&lt;strong&gt;C# 3.0 LINQ in action&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://download.microsoft.com/download/4/7/0/4703eba2-78c4-4b09-8912-69f6c38d3a56/xlinq.wmv"&gt;&lt;strong&gt;C# 3.0 XLinq in action&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://download.microsoft.com/download/4/7/0/4703eba2-78c4-4b09-8912-69f6c38d3a56/dlinq.wmv"&gt;&lt;strong&gt;C# 3.0 DLinq in action&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;</content>
      <post-name>C# 3.0 Videos</post-name>
      <categories>
        <category ref="0" />
        <category ref="4" />
        <category ref="8" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="8a642cc0-f002-4878-b541-cb05c9ac62e4" date-created="2007-01-06T02:47:26.588552Z" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=8a642cc0-f002-4878-b541-cb05c9ac62e4" type="normal">
      <title>Easy Header Access in ASP.NET 2.0</title>
      <content>&lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://blueonionsoftware.com/Blog/Images/WindowsLiveWriter/EasyHeaderAccessinASP.NET2.0_131AA/asp-net-powered%5B3%5D.gif" atomicselection="true"&gt;&lt;img style="margin: 0px 0px 0px 10px" height="23" src="http://blueonionsoftware.com/Blog/Images/WindowsLiveWriter/EasyHeaderAccessinASP.NET2.0_131AA/asp-net-powered_thumb%5B1%5D.gif" width="110" align="right"&gt;&lt;/a&gt; Recently, I needed to add a header attribute programmatically to an ASP.NET page. &lt;a href="http://ryanfarley.com/blog/archive/2006/03/24/18930.aspx"&gt;Ryan Farley&lt;/a&gt; posts an excellent article detailing some new &lt;strong&gt;ASP.NET 2.0&lt;/strong&gt; API's that make it easy.  &lt;p&gt;To change a page's title:  &lt;blockquote&gt;&lt;pre&gt;this.Header.Title = "This is the new page title.";&lt;/pre&gt;&lt;/blockquote&gt;
&lt;p&gt;To add a style attribute for the page: 
&lt;blockquote&gt;&lt;pre&gt;Style style = new Style();
style.ForeColor = System.Drawing.Color.Navy;
style.BackColor = System.Drawing.Color.LightGray;

// Add the style to the header for the body of the page
this.Header.StyleSheet.CreateStyleRule(style, null, "body");&lt;/pre&gt;&lt;/blockquote&gt;
&lt;p&gt;To add a stylesheet to : 
&lt;blockquote&gt;&lt;pre&gt;HtmlLink link = new HtmlLink();
link.Attributes.Add("type", "text/css");
link.Attributes.Add("rel", "stylesheet");
link.Attributes.Add("href", "~/newstyle.css");
this.Header.Controls.Add(link);&lt;/pre&gt;&lt;/blockquote&gt;</content>
      <post-name>Easy Header Access in ASP.NET 2.0</post-name>
      <categories>
        <category ref="1" />
        <category ref="4" />
        <category ref="8" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="b91a73d6-ecc1-4826-b571-0cae6c4651f7" date-created="2007-01-05T01:59:53.4450966Z" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=b91a73d6-ecc1-4826-b571-0cae6c4651f7" type="normal">
      <title>Firefox Quick Tip: Drag and drop URL text</title>
      <content>&lt;p&gt;&lt;img class="postimg right" style="margin: 0px 0px 0px 10px" height="100" alt="drag%20and%20drop%20text%20url.png" src="http://www.lifehacker.com/assets/resources/2007/01/drag%20and%20drop%20text%20url.png" width="250" align="right" border="1"&gt;Here's a handy tip from Lifehacker. In &lt;a href="http://firefox.com"&gt;FireFox&lt;/a&gt;, unlinked URL's in Web pages can be opened quickly and easily by simply highlighting and then dragging and dropping it on the address bar. Simple and handy.&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;&lt;a title="Firefox Quick Tip: Drag and drop URL text - Lifehacker" href="http://www.lifehacker.com/software/firefox/firefox-quick-tip-drag-and-drop-url-text-225931.php"&gt;Firefox Quick Tip: Drag and drop URL text - Lifehacker&lt;/a&gt; &lt;/p&gt; &lt;div class="wlWriterSmartContent" id="605EEA63-B54B-4e6d-A290-F5E9E8229FC1:4ad96deb-6012-4553-9371-fa742b7fbfaf" contenteditable="false" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;/div&gt;</content>
      <post-name>Firefox Quick Tip: Drag and drop URL text</post-name>
      <categories>
        <category ref="3" />
        <category ref="12" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="b2057122-567a-482e-8a90-efb5ec1efc8c" date-created="2007-01-04T03:12:55.8390446Z" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=b2057122-567a-482e-8a90-efb5ec1efc8c" type="normal">
      <title>Blog Rolls Automated</title>
      <content>
		&lt;p&gt;On many blogs, including this one, you’ll see a list of blogs the blog author subscribes to. This is commonly referred to as a “Blog Roll”. Many blogging engines include builtin support for blog rolls. I considered adding this to Bloget at one point but it runs counter to the Bloget’s design philosophy. Bloget’s design is a bit different than other blogging engines in that it supplies the parts to create a blog, but leaves the implementation up to developer. This “do it yourself” approach has advantages and disadvantages. The advantage of course is that Bloget can be implemented into existing sites with minimal effort. The disadvantage is that you have to supply the Web site pages and layout.&lt;/p&gt;
		&lt;p&gt;So when it came time to add a blog roll to this site, I thought about supplying a blog roll control. Except that in ASP.NET they already supply one – almost.  &lt;/p&gt;
		&lt;p&gt;Enter the &lt;strong&gt;&lt;asp:xml&gt;&lt;/asp:xml&gt;&lt;/strong&gt; Web server control. This little gem transforms an XML file to HTML using an XSL transform. Now don't run away just yet if you're not familiar with these terms. We'll go through it a step at a time.&lt;/p&gt;
		&lt;p&gt;If you're into reading blogs, then you're likely using some kind of &lt;a href="http://en.wikipedia.org/wiki/News_aggregator"&gt;aggregator&lt;/a&gt; (a.k.a news reader). I'm a fan of &lt;a href="http://bloglines.com"&gt;Bloglines.com&lt;/a&gt; but there are many others including &lt;a href="http://www.google.com/reader"&gt;Google Reader&lt;/a&gt;, &lt;a href="http://www.yahoo.com"&gt;Yahoo&lt;/a&gt;, etc. Off line readers exist as well like &lt;a href="http://www.curiostudio.com/"&gt;Great News&lt;/a&gt; and &lt;a href="http://www.newsgator.com/NGOLProduct.aspx?ProdId=FeedDemon"&gt;Feed Demon&lt;/a&gt;. Just about every one of these tools will export the blogs you're reading into an XML file. This file follows a standard format called &lt;a href="http://www.opml.org/about"&gt;OPML&lt;/a&gt; (Outline Processor Markup Language). And since it's a standard format and it's in XML, we can do a little processing to turn it into something suitable for display on a Web page.&lt;/p&gt;
		&lt;p&gt;What's needed is something that will read your OPML file and emit HTML. This is where XSL Transforms come into the picture. XSL (Extensible Stylesheet Language) can apply transformation rules to an XML file creating an entirely new file that is a "transformed" version of the original XML file. &lt;/p&gt;
		&lt;p&gt;
				&lt;span style="color: rgb(0, 0, 255);"&gt;
						&lt;font color="#000000"&gt;Sounds tricky, and it can be, but because OPML is such a simple format, writing an XSL transform to convert it to HTML is also simple. Here's the one I use for this Web site.&lt;/font&gt;
				&lt;/span&gt;
		&lt;/p&gt;
		&lt;p&gt;
				&lt;span style="color: rgb(0, 0, 255);"&gt;
						&lt;span style="color: rgb(163, 21, 21);"&gt;&amp;lt;xml&lt;/span&gt;
						&lt;span style="color: rgb(0, 0, 255);"&gt;
						&lt;/span&gt;
						&lt;span style="color: rgb(255, 0, 0);"&gt;version&lt;/span&gt;
						&lt;span style="color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0, 0, 255);"&gt;1.0&lt;/span&gt;"&lt;span style="color: rgb(0, 0, 255);"&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;encoding&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0, 0, 255);"&gt;utf-8&lt;/span&gt;"&lt;span style="color: rgb(0, 0, 255);"&gt;?&amp;gt;&lt;br /&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;xsl:stylesheet&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt; version&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0, 0, 255);"&gt;1.0&lt;/span&gt;"&lt;span style="color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;xmlns:xsl&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&lt;a href="http://www.w3.org/1999/XSL/Transform"&gt;http://www.w3.org/1999/XSL/Transform&lt;/a&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;br /&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;xsl:output &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;method&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0, 0, 255);"&gt;html&lt;/span&gt;" &lt;span style="color: rgb(0, 0, 255);"&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;indent&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0, 0, 255);"&gt;yes&lt;/span&gt;"&lt;span style="color: rgb(0, 0, 255);"&gt;/&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;  &amp;lt;&lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;xsl:template &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;match&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0, 0, 255);"&gt;opml&lt;/span&gt;"&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;br /&gt;    &amp;lt;&lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;xsl:for-each &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;select&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0, 0, 255);"&gt;body/outline&lt;/span&gt;"&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;br /&gt;      &amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;a &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;href&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0, 0, 255);"&gt;{@htmlUrl}&lt;/span&gt;"&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;xsl:value-of &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;select&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0, 0, 255);"&gt;@text&lt;/span&gt;"&lt;span style="color: rgb(0, 0, 255);"&gt;/&amp;gt;&lt;!--&lt;/span--&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;a&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;br&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;/&amp;gt;&lt;br /&gt;    &lt;!--&lt;/span--&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&amp;lt;/xsl:for-each&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;br /&gt;  &lt;!--&lt;/span--&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&amp;lt;/xsl:template&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&lt;!--&lt;/span--&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;&amp;lt;/xsl:stylesheet&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
		&lt;/p&gt;
		&lt;p&gt;Most of this code is just boiler plate needed to specify that it is an XSL template. The interesting bit is in the middle of the code.&lt;/p&gt;
		&lt;p&gt;
				&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;
				&lt;span style="color: rgb(163, 21, 21);"&gt;a&lt;/span&gt;
				&lt;span style="color: rgb(0, 0, 255);"&gt;
				&lt;/span&gt;
				&lt;span style="color: rgb(255, 0, 0);"&gt;href&lt;/span&gt;
				&lt;span style="color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0, 0, 255);"&gt;{@htmlUrl}&lt;/span&gt;"&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;xsl:value-of &lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;select&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0, 0, 255);"&gt;@text&lt;/span&gt;"/&amp;gt;&amp;lt;&lt;span style="color: rgb(0, 0, 255);"&gt;/&amp;gt;&lt;!--&lt;/span--&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;a&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;br&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;/&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
		&lt;p&gt;Now this isn't so bad. We're just building a link and adding a line break. The &lt;strong&gt;{@htmlUrl}&lt;/strong&gt; and &lt;strong&gt;@text&lt;/strong&gt; portions are substituion parameters. This template just loops through the OPML file and for each entry it encounters it replaces the &lt;strong&gt;@htmlUrl&lt;/strong&gt; parameter with the blog's URL and the &lt;strong&gt;@text&lt;/strong&gt; parameter with the blog's title. Changing the format to suit your tastes is easy. Let's say you want to make it bold.&lt;/p&gt;
		&lt;p&gt;
				&lt;span style="color: rgb(0, 0, 255);"&gt;
						&lt;b&gt;&amp;lt;b&amp;gt;&amp;lt;&lt;/b&gt;
				&lt;/span&gt;
				&lt;span style="color: rgb(163, 21, 21);"&gt;
						&lt;b&gt;a&lt;/b&gt;
				&lt;/span&gt;
				&lt;span style="color: rgb(0, 0, 255);"&gt;
				&lt;/span&gt;
				&lt;span style="color: rgb(255, 0, 0);"&gt;
						&lt;b&gt;href&lt;/b&gt;
				&lt;/span&gt;
				&lt;span style="color: rgb(0, 0, 255);"&gt;
						&lt;b&gt;=&lt;/b&gt;
				&lt;/span&gt;
				&lt;b&gt;"&lt;span style="color: rgb(0, 0, 255);"&gt;{@htmlUrl}&lt;/span&gt;"&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;xsl:value-of&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt; select&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0, 0, 255);"&gt;@text&lt;/span&gt;"&lt;span style="color: rgb(0, 0, 255);"&gt;/&amp;gt;&amp;lt;/&lt;!--&lt;/span--&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;a&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&amp;lt;/b&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&amp;lt;&lt;span style="color: rgb(163, 21, 21);"&gt;br&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;/&amp;gt; &lt;/span&gt;&lt;/p&gt;
		&lt;p&gt;I think you see the point. Save this code to a file and call it something interesting like BlogRoll.xsl.&lt;/p&gt;
		&lt;p&gt;All that's left is to choose where to put place our blog roll on the page. Here's where the &lt;strong&gt;&lt;asp:xml&gt;&lt;/asp:xml&gt;&lt;/strong&gt; server control comes in. As you can see below, the &lt;strong&gt;&lt;asp:xml&gt;&lt;/asp:xml&gt;&lt;/strong&gt; server control takes two parameters. The &lt;strong&gt;DocumentSource&lt;/strong&gt; is your exported OPML file, and the &lt;strong&gt;TransformSource&lt;/strong&gt; is the XSL file you saved. Add this to your page.&lt;/p&gt;
		&lt;p&gt;
		&lt;/p&gt;
		&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;
		&lt;span style="color: rgb(163, 21, 21);"&gt;asp&lt;/span&gt;
		&lt;span style="color: rgb(0, 0, 255);"&gt;:&lt;/span&gt;
		&lt;span style="color: rgb(163, 21, 21);"&gt;Xml&lt;/span&gt;
		&lt;span style="color: rgb(255, 0, 0);"&gt;ID&lt;/span&gt;
		&lt;span style="color: rgb(0, 0, 255);"&gt;="XmlBlogRoll"&lt;/span&gt;
		&lt;span style="color: rgb(255, 0, 0);"&gt;runat&lt;/span&gt;
		&lt;span style="color: rgb(0, 0, 255);"&gt;="server"&lt;/span&gt;
		&lt;br /&gt;  &lt;span style="color: rgb(255, 0, 0);"&gt;DocumentSource&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="~/App_Data/export.xml"&lt;/span&gt; &lt;br /&gt;  &lt;span style="color: rgb(255, 0, 0);"&gt;TransformSource&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="~/BlogRoll.xsl" /&amp;gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;p&gt;&lt;font color="#000000"&gt;When you display the page, you should see your blog roll. Now this was perhaps a bit of work but now you have a data driven blog roll. Anytime you want to update your blog roll, go to your news reader, export your blog roll to a file, and upload it.&lt;/font&gt;&lt;/p&gt;&lt;/span&gt;</content>
      <post-name>Blog Rolls Automated</post-name>
      <categories>
        <category ref="1" />
        <category ref="2" />
        <category ref="8" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="795b917e-3066-47d4-9c49-8f489fc94d2b" date-created="2007-01-02T01:50:11.5031702Z" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=795b917e-3066-47d4-9c49-8f489fc94d2b" type="normal">
      <title>Microsoft's Gifts to Bloggers</title>
      <content>
		&lt;p&gt;
				&lt;a href="http://www.playfuls.com/news_05668_The_Controversy_Over_Microsofts_Gifts_to_Bloggers.html"&gt;
						&lt;img alt="The Controversy Over Microsoft’s Gifts to Bloggers" src="http://www.playfuls.com/scitech/gimages/acefer01012.jpg" align="right" border="0" hspace="6" /&gt;Playfuls.com is reporting&lt;/a&gt; that Microsoft is giving laptops to  bloggers who are covering technologies related to Vista. Some are calling it a bribe. I have only one thing to say to all this. Hey, Microsoft, &lt;strong&gt;I love Vista!&lt;/strong&gt; I’ve never used it but I’m sure I would have lots of good things to say about if only I had a laptop to run it on &lt;img src="http://blueonionsoftware.com/Blog/Images/Blog/smile3.gif" /&gt;.  (Perhaps I’ve had a little more holidy cheer than I can handle?)&lt;/p&gt;
		&lt;blockquote dir="ltr" style="background: rgb(240, 248, 255) none repeat scroll 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; margin-right: 0px;"&gt;
				&lt;p&gt;
						&lt;span id="intelliTXT" name="intelliTxt"&gt;
								&lt;o:p nd="1"&gt;Last week, Microsoft and AMD decided to keep bloggers informed about new Microsoft’s OS, Windows Vista. The companies sent Acer Ferrari laptops to select bloggers who are covering in their blogs subjects related to technology or other topics that could be affected by Windows Vista, such as photography or online video. The laptops are valued at more than $2,200 each..&lt;/o:p&gt;
						&lt;/span&gt;
				&lt;/p&gt;
		&lt;/blockquote&gt;
</content>
      <post-name>Microsoft's Gifts to Bloggers</post-name>
      <categories>
        <category ref="5" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="ef6dd38e-ee61-409c-ae73-3e7747dd77ed" date-created="2006-12-29T23:42:31.2271341Z" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=ef6dd38e-ee61-409c-ae73-3e7747dd77ed" type="normal">
      <title>Microsoft .NET Quick Start Tutorials</title>
      <content>&lt;p&gt;&lt;img alt="Dotnet logo" hspace="8" src="http://blueonionsoftware.com/Blog/Images/Blog/dotnet.gif" align="right" border="0" /&gt;I wish I had known about this site when I started programming in ASP.NET a few months back. The &lt;a href="http://quickstarts.asp.net/QuickStartv20/default.aspx"&gt;Microsoft .NET Quick Start Tutorials&lt;/a&gt; Web site is just the right balance of detail and brevity. It assumes you know a bit about Web programming but extensive knowledge is not necessary. The quick starts only apply to ASP.NET 2.0 technologies despite the name. Perhaps in the future Microsoft will supply additional tutorial on other .NET technologies.&lt;/p&gt;
&lt;p&gt;What’s enjoyable about this site is the organisation and density of the material. The summaries and overviews are clearly written and not too long. The detailed sections are short and dense. Just the way I like it. I discovered several features in ASP.NET 2.0 that I did not know exist, like &lt;a href="http://quickstarts.asp.net/QuickStartv20/aspnet/doc/tipstricks/default.aspx#nocompilepages"&gt;No Compile Pages&lt;/a&gt;. This site also supplies something I could never find in the MSDN documentation, a single page &lt;a href="http://quickstarts.asp.net/QuickStartv20/aspnet/doc/pages/syntax.aspx"&gt;Web Forms Syntax Reference&lt;/a&gt;. To me, this is pure joy. The section on &lt;a href="http://quickstarts.asp.net/QuickStartv20/aspnet/doc/localization/default.aspx"&gt;Internationalizing Your Application&lt;/a&gt; is equally useful. There is also a section that let’s you test drive all the standard ASP.NET server controls including the code used to generate the examples in both C# and VB.&lt;/p&gt;
&lt;p&gt;This is a great resource for everyone. Beginners obviously benefit but even seasoned veterans might find a few nuggets, especially in the &lt;a href="http://quickstarts.asp.net/QuickStartv20/aspnet/doc/tipstricks/default.aspx"&gt;Tips and Tricks&lt;/a&gt; section.&lt;/p&gt;</content>
      <post-name>Microsoft .NET Quick Start Tutorials</post-name>
      <categories>
        <category ref="0" />
        <category ref="1" />
        <category ref="7" />
        <category ref="8" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="49a78690-4675-4083-bcd5-79771ab6ddcf" date-created="2006-12-29T02:13:15.7547049Z" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=49a78690-4675-4083-bcd5-79771ab6ddcf" type="normal">
      <title>Zeitgeist: Search patterns, trends, and surprises</title>
      <content> &lt;img src="http://www.google.com/intl/en/press/images/logo.gif" height="54" width="130" /&gt;&lt;table border="0" cellpadding="0" cellspacing="0" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td valign="top" width="95%"&gt;&lt;table border="0" cellpadding="0" cellspacing="0" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;table border="0" cellpadding="0" cellspacing="0" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td width="92%"&gt;&lt;span class="style1"&gt;&lt;font font="" color="#2fbb10"&gt;Google.com - Top Searches in 2006&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;img src="http://www.google.com/intl/en/press/zeitgeist2006/images/clear.gif" height="10" width="50" /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top"&gt;&lt;font font="" color="#999999" size="2"&gt;  1.&lt;/font&gt;&lt;font font="" color="#333333" size="2"&gt;bebo &lt;br /&gt;&lt;font font="" color="#999999" size="2"&gt;  2.&lt;/font&gt; myspace &lt;br /&gt;&lt;font font="" color="#999999" size="2"&gt;  3.&lt;/font&gt; world cup&lt;br /&gt;&lt;font font="" color="#999999" size="2"&gt;  4.&lt;/font&gt; metacafe&lt;br /&gt;&lt;font font="" color="#999999" size="2"&gt;  5.&lt;/font&gt; radioblog &lt;br /&gt;&lt;font font="" color="#999999" size="2"&gt;  6.&lt;/font&gt; wikipedia &lt;br /&gt;&lt;font font="" color="#999999" size="2"&gt;  7.&lt;/font&gt; video &lt;br /&gt;&lt;font font="" color="#999999" size="2"&gt;  8.&lt;/font&gt; rebelde &lt;br /&gt;&lt;font font="" color="#999999" size="2"&gt;  9.&lt;/font&gt; mininova &lt;br /&gt;&lt;font font="" color="#999999" size="2"&gt;10.&lt;/font&gt; wiki &lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;td&gt; &lt;/td&gt;&lt;td&gt;&lt;table border="0" cellpadding="0" cellspacing="0" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td width="92%"&gt;&lt;span class="style1"&gt;&lt;font font="" color="#2fbb10"&gt;Google News - Top Searches in 2006&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;img src="http://www.google.com/intl/en/press/zeitgeist2006/images/clear.gif" height="10" width="50" /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top"&gt;&lt;font font="" color="#999999" size="2"&gt;  1.&lt;/font&gt;&lt;font font="" color="#333333" size="2"&gt;paris hilton &lt;br /&gt;&lt;font font="" color="#999999" size="2"&gt;  2.&lt;/font&gt; orlando bloom &lt;br /&gt;&lt;font font="" color="#999999" size="2"&gt;  3.&lt;/font&gt; cancer&lt;br /&gt;&lt;font font="" color="#999999" size="2"&gt;  4.&lt;/font&gt; podcasting&lt;br /&gt;&lt;font font="" color="#999999" size="2"&gt;  5.&lt;/font&gt; hurricane katrina&lt;br /&gt;&lt;font font="" color="#999999" size="2"&gt;  6.&lt;/font&gt; bankruptcy&lt;br /&gt;&lt;font font="" color="#999999" size="2"&gt;  7.&lt;/font&gt; martina hingis &lt;br /&gt;&lt;font font="" color="#999999" size="2"&gt;  8.&lt;/font&gt; autism &lt;br /&gt;&lt;font font="" color="#999999" size="2"&gt;  9.&lt;/font&gt; 2006 nfl draft&lt;br /&gt;&lt;font font="" color="#999999" size="2"&gt;10.&lt;/font&gt; celebrity big brother 2006&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;Ever been to &lt;a href="http://www.google.com/intl/en/press/zeitgeist.html"&gt;Google Zeitgeist&lt;/a&gt;? It’s a fun an interesting view of search patterns and trends Google collects. The top search this year is “bebo”. What is it? Heck if I know and I’m suppose to be informed. Just proves that I’m over 40 and clearly not with it any more. &lt;img src="http://blueonionsoftware.com/Blog/Images/Blog/smile3.gif" /&gt;  I did recognize most of the scandals although I had no idea Christie Brinkley was embroiled in one (Billy, you should have kept her). Getting old isn’t for sissies but it does beat the alternative. Happy New Year!&lt;br /&gt;&lt;br /&gt;</content>
      <post-name>Zeitgeist: Search patterns, trends, and surprises</post-name>
      <categories>
        <category ref="7" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="778657ff-bd2c-420f-8173-aadb5fa2fb15" date-created="2006-12-27T15:08:06.0186532Z" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=778657ff-bd2c-420f-8173-aadb5fa2fb15" type="normal">
      <title>WebOS Roundup - 10 Online Operating Systems</title>
      <content>&lt;p&gt;&lt;a href="http://en.wikipedia.org/wiki/Webtop"&gt;WebOS’s&lt;/a&gt; (sometimes called Webtops) are online systems designed to resemble a standard PC desktop while making it accessible from anywhere in the world. These virtual desktops look and feel like a Windows desktop (or Linux or Mac) but work through a Web browser making any Web capable computer a portal to your applications and data. None of these systems are mature enough to replace your operating system just yet but they show promise.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://franticindustries.com/blog/2006/12/21/big-webos-roundup-10-online-operating-systems-reviewed/"&gt;Big WebOS roundup - 10 online operating systems reviewed&lt;/a&gt; has a nice review of the 10 different WebOS’s that’s worth reading. To satisfy my own curiosity, I decided to give these services a spin for myself. While interesting, none of these systems are ready for commercial use (IMHO). To cut to the chase, the only two worth a look are Goowy and YouOS. &lt;font color="#ff0000"&gt;Upate: A reader pointed out that DesktopTwo is working. The outage I experienced was temporary. It has since come back on line. After trying it I agree with the reader that it is indeed a solid product and worth consideration.&lt;/font&gt; I could see something like this working in a corporate environment. As for me, I’ll stick with my laptop for now.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.craythur.com/"&gt;Craythur.com&lt;/a&gt; &lt;br /&gt;Works, demo only. Nice feel and fast.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://desktoptwo.com/"&gt;Desktoptwo&lt;/a&gt; &lt;img src="http://blueonionsoftware.com/Blog/Images/Blog/smile19.gif" /&gt;&lt;br /&gt;&lt;font color="#ff0000"&gt;&lt;b&gt;Update: &lt;/b&gt;&lt;/font&gt;A reader commented that he felt my assessment a bit hasty. When tried to login earlier, I got the message below. I went back and indeed, DesktopTwo is really quite good. Possibly better than the others. Thanks for the heads up!&lt;/p&gt;
&lt;p&gt;“output=error&amp;msg=Could not connect to the database&amp;” (Need I say more?)&lt;/p&gt;
&lt;p&gt;&lt;a href="http://eyeos.org/"&gt;Eyeos&lt;/a&gt; &lt;br /&gt;Worth a look. Still too early for practical use.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.glidedigital.com/"&gt;Glide&lt;/a&gt; &lt;br /&gt;Free registration requires an SMS capable cell phone to receive the registration code. No thank you…&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.goowy.com/"&gt;Goowy&lt;/a&gt; &lt;img src="http://blueonionsoftware.com/Blog/Images/Blog/smile19.gif" /&gt;&lt;br /&gt;Second best experience of the bunch. The best looking in my opinion. Keep an eye on this one.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.orcaa.com/"&gt;Orcaa&lt;/a&gt; &lt;br /&gt;IE only (no Firefox support yet). Interesting concept but could not get it to work with IE7.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.purefect.org/"&gt;Purefect&lt;/a&gt; &lt;br /&gt;Shows a lot of promise. Early stage of development. No real applications yet.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://giffard.dynalias.net/ssoe/"&gt;SSOE&lt;/a&gt; &lt;br /&gt;Too early to tell. Huge icons. &lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.xindesk.com/"&gt;Xindesk&lt;/a&gt; &lt;br /&gt;Not available yet. Only screen shots&lt;br /&gt;&lt;font color="#ff0000"&gt;Update: The author points out that there is a demo link on the blog page. Tried it. Very nice. Looks like it’s early in development which likely explains some of the slowness I experienced. Should be a contender.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.youos.com/"&gt;YouOS&lt;/a&gt; &lt;img src="http://blueonionsoftware.com/Blog/Images/Blog/smile19.gif" /&gt;&lt;br /&gt;Easily the best system going. I like the look of Goowy better but YouOS is further along in development. It has an editor and several Web browsers. Worth a look. &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;</content>
      <post-name>WebOS Roundup - 10 Online Operating Systems</post-name>
      <categories>
        <category ref="7" />
      </categories>
      <comments>
        <comment id="66cde4e3-57bf-46f6-823b-3ea689e86710" date-created="2006-12-27T16:56:03.4929338Z" user-name="Pablo Cabrera" user-email="nypayaso@yahoo.com">
          <title>RE: WebOS Roundup - 10 Online Operating Systems</title>
          <content />
        </comment>
        <comment id="0431f992-1f55-4d87-a671-6d1153d3ecd9" date-created="2006-12-27T18:17:04.8353899Z" user-name="Mike" user-email="mike@blueonionsoftware.com">
          <title>RE: WebOS Roundup - 10 Online Operating Systems</title>
          <content />
        </comment>
        <comment id="732d3aac-ced2-4766-8e81-55c31a3b00ae" date-created="2006-12-27T19:30:50.5044867Z" user-name="Mikael bergkvist" user-email="mikael.bergkvist@naltabyte.se">
          <title>RE: WebOS Roundup - 10 Online Operating Systems</title>
          <content />
        </comment>
        <comment id="b74317cc-385d-44d5-9f20-ab0063c67562" date-created="2006-12-27T19:39:33.2666011Z" user-name="Mike" user-email="mike@blueonionsoftware.com">
          <title>RE: WebOS Roundup - 10 Online Operating Systems</title>
          <content />
        </comment>
        <comment id="b92d066a-738d-47ac-a23e-77a752ef2683" date-created="2006-12-27T23:44:44.6940645Z" user-name="Pablo Cabrera" user-email="nypayaso@yahoo.com">
          <title>RE: WebOS Roundup - 10 Online Operating Systems</title>
          <content />
        </comment>
        <comment id="c24d4a65-9b5e-4532-ade9-53570f4ed558" date-created="2006-12-28T01:12:12.8751162Z" user-name="Mike" user-email="mike@blueonionsoftware.com">
          <title>RE: WebOS Roundup - 10 Online Operating Systems</title>
          <content />
        </comment>
        <comment id="5661dd72-ee3a-455e-b807-63a8ab90b3a7" date-created="2007-01-09T00:49:17.2468201Z" user-name="Mikael Bergkvist" user-email="mikael.bergkvist@naltabyte.se">
          <title>RE: WebOS Roundup - 10 Online Operating Systems</title>
          <content />
        </comment>
        <comment id="cdbd1b37-1112-46ea-bb21-400702afb0f0" date-created="2007-01-09T23:54:21.4187414Z" user-name="Mike" user-email="mike@blueonionsoftware.com">
          <title>RE: WebOS Roundup - 10 Online Operating Systems</title>
          <content />
        </comment>
      </comments>
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="74b5600c-abbf-421e-965b-4e058b3925ae" date-created="2006-12-27T03:31:34.7883768Z" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=74b5600c-abbf-421e-965b-4e058b3925ae" type="normal">
      <title>All Electric Vehicles Appearing</title>
      <content>
		&lt;p&gt;Recently I blogged that the &lt;a href="http://blueonionsoftware.com/Blog.aspx?bloget_mode=View&amp;amp;bloget_item=18dd72fd-0854-41c0-a603-7d2379421129"&gt;future of cars is electric&lt;/a&gt;. Here's an offering from &lt;a title="Phoenx Motorcars Home Page" href="http://phoenixmotorcars.com"&gt;Phoenix Motorcars&lt;/a&gt; that drives the point home (Ok, bad pun). No word on the cost but if it lives up to the specifications I'm mighty interested. My only question is "Why a pickup truck?" There appears to a sedan model but there is little information about it other than these &lt;a href="http://phoenixmotorcars.com/models/images/suv-front.jpg"&gt;two&lt;/a&gt;&lt;a href="http://phoenixmotorcars.com/models/images/suv-rear.jpg"&gt;photos&lt;/a&gt;.&lt;/p&gt;
		&lt;p&gt;From the website:&lt;/p&gt;
		&lt;p&gt;Phoenix Motorcars manufactures zero-emission, freeway-speed fleet vehicles. It is an early leader in the mass production of full function, green electric trucks and SUVs for commercial fleet use. Based in Ontario, California, Phoenix Motorcars uses the NanoSafe™ battery, a non-toxic, all-battery solution to eliminate noise and toxic vehicle emissions that contribute to air pollution.&lt;/p&gt;
		&lt;p&gt;
				&lt;strong&gt;Green Fleet Advantages: &lt;/strong&gt;
		&lt;/p&gt;
		&lt;ul&gt;
				&lt;li&gt;Zero emissions  &lt;/li&gt;
				&lt;li&gt;All-battery power - NanoSafe™ production battery pack system  &lt;/li&gt;
				&lt;li&gt;100+ miles per charge  &lt;/li&gt;
				&lt;li&gt;Speeds of 95 m.p.h. carrying five passengers and full payload  &lt;/li&gt;
				&lt;li&gt;High torque: 0 to 60 m.p.h. in 10 seconds  &lt;/li&gt;
				&lt;li&gt;Long battery pack life: 250,000 miles/12+ years  &lt;/li&gt;
				&lt;li&gt;Off board charger: 10 minutes to recharge to 95% capacity  &lt;/li&gt;
				&lt;li&gt;On board charger: 6 hours to recharge from 220V plug-in  &lt;/li&gt;
				&lt;li&gt;California Air Resources Board (CARB)-Certified  &lt;/li&gt;
				&lt;li&gt;Available configurations:  &lt;ul&gt;&lt;li&gt;Mid-Size 4-Door Pickup (SUT)  &lt;/li&gt;&lt;li&gt;Mid-Size SUV&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
		&lt;/ul&gt;
		&lt;img alt="Sport Utility Truck" src="http://phoenixmotorcars.com/images/main-home.jpg" height="162" width="515" /&gt;
</content>
      <post-name>All Electric Vehicles Appearing</post-name>
      <categories>
        <category ref="10" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="9def0774-3b88-402e-a987-b3a03bf110fe" date-created="2006-12-26T14:00:30.850691Z" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=9def0774-3b88-402e-a987-b3a03bf110fe" type="normal">
      <title>Charles Petzold vs. IMac</title>
      <content>&lt;p&gt;If you're a windows programmer then it's likely you know who Charles Petzold and his many books on Windows programming. Charles writings are always technically concise and almost always devoid of commentary, which is why I was quite surprised to read his &lt;a title="It Just Works" href="http://www.charlespetzold.com/blog/2006/12/250913.html"&gt;blog&lt;/a&gt; article on his experiences with Apple and in particular, the IMac. Here's an excerpt:&lt;/p&gt; &lt;blockquote style="background: #f0f8ff"&gt; &lt;p&gt;On Apple's home page, the most important information they deemed necessary to convey to me was that I needed QuickTime 7 to view even more of those insufferable TV ads where that smug goateed glazy-eyed dork tries to make closed architecture and a complete disregard for backward compatibility seem cool.&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;There are other notable passages with words like "dreadful" and "baffle". Having read many of Petzold's books I find this direct, blunt commentary a bit surprising. Turns out my hero Charles is also human.&lt;/p&gt; &lt;p&gt;On the subject of the IMac however, I'm in agreement with Petzold's assessment. I've worked with Macs over the years and frankly, I don't get their appeal. Perhaps I'm just too much of a geek or maybe I've drank too much of the Windows "kool-aid" to ever go back, but I'm not impressed.&lt;/p&gt; &lt;p&gt;I remember a few years back consulting on a Web project and working with a graphics designer on the art work. She was very good and was squarely in the Apple camp when it came to computing. I remember one thirty minute session where she had to reboot her system 4 times. What was notable however was not the reboots, but her complete tolerance of the situation. She simply waited for machine to reboot and then continued on as if uninterrupted. I guess she liked the machine/environment so much that she could look past what I would consider a glaring fault.&lt;/p&gt; &lt;p&gt;That's not to say Window's users don't do the same thing. I've on occasion entered into the Mac vs. Windows debate only to find my own views on the matter more opinioned than I might care to admit. Still, I've always been puzzled at the near Messianic devotion of Apple fans. I'm often left wondering if I'm not "getting it."&lt;/p&gt; &lt;p&gt;And I have to agree with Charles, the TV ads really are insufferable.&lt;/p&gt; &lt;p&gt;The one application that really shines on the Mac is the Safari browser. It's one (and only) Mac application that I've ever envyed. Fast, slick and standards compliant. I would pay money for Windows port of Safari.&lt;/p&gt; &lt;p&gt;As for Charles, my hat is off to you. Your books have always been an inspiration.&lt;/p&gt;</content>
      <post-name>Charles Petzold vs. IMac</post-name>
      <categories>
        <category ref="3" />
        <category ref="8" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="f9cd97d2-e428-4680-ac16-8479724946d2" date-created="2006-12-23T01:23:30.6802049Z" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=f9cd97d2-e428-4680-ac16-8479724946d2" type="normal">
      <title>Bloget Alpha 3 is Away</title>
      <content>&lt;p&gt;&lt;a href="http://blueonionsoftware.com/Bloget.aspx"&gt;Bloget&lt;/a&gt; Version 0.3 is just in time for the Holidays. This release implements the &lt;a href="http://www.xmlrpc.com/metaWeblogApi"&gt;MetaWeblog Api&lt;/a&gt; including image uploads. It works great with many off line editors like &lt;a href="http://blogjet.com/"&gt;BlogJet&lt;/a&gt; and &lt;a href="http://windowslivewriter.spaces.live.com/blog/cns!D85741BB5E0BE8AA!174.entry"&gt;Windows Live Writer&lt;/a&gt; as well as blogging services like &lt;a href="http://www.blogmailr.com/"&gt;Blogmailr&lt;/a&gt;. Along the way there have been many &lt;em&gt;little&lt;/em&gt; changes that don’t seem like much but really add to the overall feel of the project. Of course being only Alpha 3 there’s lots left to do.&lt;/p&gt;
&lt;p&gt;In Alpha 4 the Web editor will get some attention. It needs to catch up with the off line editors and allow image uploads, enclosures and file uploads. I’ll also add trackback support.&lt;/p&gt;
&lt;p&gt;In Alpha 5,  I’m also hoping to add &lt;a href="http://codeplex.com/Wiki/View.aspx?ProjectName=BlogML"&gt;BlogML&lt;/a&gt; support so content can be imported and exported easily into Bloget.&lt;/p&gt;
&lt;p&gt;Looking down the road a bit further, Alpha 6 should have time zones, blacklists and better comment and trackback moderation.&lt;/p&gt;
&lt;p&gt;The one thing I could really use right now is a logo for Bloget. If you have a way with photoshop and have a few minutes why not create a logo or two. I’ll post all submissions. Any help is appreciated. &lt;img src="http://blueonionsoftware.com/Blog/Images/Blog/smile19.gif" /&gt;&lt;/p&gt;
&lt;p&gt;And don’t forget to write! Feedback, good or bad really helps me to know if I’m hitting the mark or not plus I’m just curious how the project is being used. – Mike&lt;/p&gt;</content>
      <post-name>Bloget Alpha 3 is Away</post-name>
      <categories>
        <category ref="2" />
        <category ref="7" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="c4ca9f0c-6c0e-419b-8341-9fc69a77bd35" date-created="2006-12-22T14:39:01.8907538Z" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=c4ca9f0c-6c0e-419b-8341-9fc69a77bd35" type="normal">
      <title>The Day the Trackbacks Died</title>
      <content>&lt;p&gt;Jeff Atwood over at Coding Horror thinks trackbacks are dead. From the &lt;a href="http://www.codinghorror.com/blog/archives/000751.html"&gt;article&lt;/a&gt;.&lt;/p&gt; &lt;blockquote style="background-color: #f0f8ff"&gt; &lt;p&gt;They're a great idea. &lt;b&gt;Unfortunately, trackbacks are so horribly and fundamentally broken that they're effectively useless.&lt;/b&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;I would tend to agree. There really is no way to keep spammers out with this mechanism and as such it has been horribly abused. Atom looks better in at least it can use basic HTTP authentication but it then requires giving the linker permission. MetaWeblog, which I've complained plenty about lately sends passwords in the clear. How long before people start abusing that? The comments on Jeff's blog have several suggestions that might slow down the flood a little and there's a decent followup &lt;a href="http://rabidpaladin.com/archive/2006/12/21/Trackbacks-Are-Dead.aspx"&gt;article&lt;/a&gt; here as well. It's forcing me to think about adding better pingback moderation to &lt;a href="http://blueonionsoftware.com/Bloget.aspx"&gt;Bloget&lt;/a&gt;. Bloget does an Ok job right now in that it verifies that the trackback contains a link to the referenced article. And it has to occur in the first 10K of the post because that's all Bloget will read before terminating the connection. Bloget don't waste bandwidth or CPU trying to scan 3 MB articles. And I thought writing this blog engine thing was going to be easy.&lt;/p&gt;</content>
      <post-name>The Day the Trackbacks Died</post-name>
      <categories>
        <category ref="2" />
        <category ref="7" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="4ef23789-2927-43be-80bd-1c36278dde31" date-created="2006-12-22T02:20:59.7849341Z" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=4ef23789-2927-43be-80bd-1c36278dde31" type="normal">
      <title>RocketPost2</title>
      <content>
		&lt;p&gt;
		&lt;/p&gt;
		&lt;p&gt;This post tests Bloget with &lt;a href="http://www.anconia.com/rocketpost/"&gt;RocketPost2&lt;/a&gt;. Actually, this blog editor gave me a quite a bit of difficulty. Unlike other blog editors, sends the password as a base64 string. Not a bad idea but again, not standard either. That’s what testing is for I suppose. It has some rather unique features that are a bit of fun. You have already seen one of them, the Drop Cap style (well you would if I could get it to post). Another cool feature is something called a pull quote. Just highlight a section and click the button and you get one of those quotes in a block with larget letters. Makes for some nice effects. &lt;img height="83" hspace="5" src="http://blueonionsoftware.com/Blog/Images/blogcglogo_8.png" width="172" align="left" vspace="5" border="0" /&gt;&lt;/p&gt;
		&lt;p&gt;It has the usual image uploading and handeling features plus the ability to define margins and borders. A nice touch. Other image formatting options including tinting, film graining cropping and dithering (image at left was cropped and film grained). Just enough to spice up your images without having to go to an external program. One note about the image uploading. Like many offline blog editors, RocketPost uses the metaWeblog.newMediaObject API. However, like the passwords, it is non-standard in that it does not pass the media type as required by the &lt;a href="http://www.xmlrpc.com/metaWeblogApi"&gt;MetaWeblog RFC&lt;/a&gt;. &lt;/p&gt;
		&lt;p&gt;Adding tags like &lt;a href="http://www.technorati.com/tag/Bloget"&gt;Bloget &lt;/a&gt;is a snap and it supports a dozen different services out of the box. It’s a bit pricy at $99 however. &lt;/p&gt;
		&lt;p&gt;After playing with this some more I beginning to realize just how buggy this thing is. Their metaWeblog implementation has all sorts of strange anonmilies like adding a text node to the &lt;params&gt;tag. It can be worked around but it sure would be easier if they followed the RFC more closely.  What can’t be worked around is it does not send a newPost. Everytime I to publish a new post, it tries to send it as an metaWeblog.editPost. That’s just not going to work. Finally, while they sometimes use base64 for passwords, other times it is just passed as a string value. The lack of consistency is really annoying. I don’t get a good feeling about this product and given their complete lack of compliance I can’t see supporting it. Bummer. Some great ideas but lousy execution. I finally gave up and posted this entry with Windows Live Writer because of the problems.&lt;/params&gt;&lt;/p&gt;
</content>
      <post-name>RocketPost2</post-name>
      <categories>
        <category ref="2" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="21a8c69b-a01f-435d-b96c-7359e5a5bf10" date-created="2006-12-20T02:19:13.209048Z" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=21a8c69b-a01f-435d-b96c-7359e5a5bf10" type="normal">
      <title>Maintain Scroll Position after Postbacks</title>
      <content>&lt;p&gt;This is such a handy tip! In one line of code you can tell ASP.NET to maintain scoll position on postbacks. Very handy for long forms. I've already incorporated into &lt;a href="http://blueonionsoftware.com/Bloget.aspx"&gt;Bloget&lt;/a&gt;. See more about it &lt;a href="http://www.madskristensen.dk/blog/Maintain+Scroll+Position+After+Postbacks.aspx"&gt;here&lt;/a&gt;.&lt;/p&gt;</content>
      <post-name>Maintain Scroll Position after Postbacks</post-name>
      <categories>
        <category ref="1" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="585eadd2-2410-4cda-935c-b3a99fdacf75" date-created="2006-12-18T23:13:02.5323914Z" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=585eadd2-2410-4cda-935c-b3a99fdacf75" type="normal">
      <title>HttpWebRequest GetResponse() Gotcha's</title>
      <content>
		&lt;p&gt;If you read the documentation for HttpWebRequest.GetResponse() you'll see that it returns a HttpWebResponse() object. One of the members is Status that tells you the status of the server's response. Fair enough, but there's a gotcha here. If the server returns an response like 403 (Forbidden) or 500 (Server error), a &lt;strong&gt;WebException&lt;/strong&gt; is raised. This strikes me as a bit counterintuitive since the server did reply with a valid HTTP response. Fortunately there is a way out of this conundrum. A "note" in the GetResponse() documentation gives you a chance to still determine the status.&lt;/p&gt;
		&lt;blockquote&gt;
				&lt;p&gt;
						&lt;a href="http://blueonionsoftware.com/Blog/Images/WindowsLiveWriter/HttpWebRequest.GetResponseGotchas_BC87/note2.png" atomicselection="true"&gt;
								&lt;img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height="10" src="http://blueonionsoftware.com/Blog/Images/WindowsLiveWriter/HttpWebRequest.GetResponseGotchas_BC87/note_thumb.png" width="10" border="0" /&gt;
						&lt;/a&gt;
						&lt;strong&gt;
								&lt;font color="#004080"&gt;Note&lt;/font&gt;
						&lt;/strong&gt;
				&lt;/p&gt;
				&lt;p&gt;If a &lt;b&gt;WebException&lt;/b&gt; is thrown, use the &lt;a href="ms-help://ms.msdnqtr.v80.en/P_System_Net_WebException_Response.htm"&gt;Response&lt;/a&gt; and &lt;a href="ms-help://ms.msdnqtr.v80.en/P_System_Net_WebException_Status.htm"&gt;Status&lt;/a&gt; properties of the exception to determine the response from the server.&lt;/p&gt;
		&lt;/blockquote&gt;
		&lt;p&gt;Personally, I think if the server gives you a valid HTTP response, even one indicating an error, it should not raise an exception. It's not that unusual to get error responses from servers. Raising these errors as exceptions introduces exception handling into what can be considered normal control flow. Generally, this is frowned upon because the situation is not "exceptional." Also, exception handling is many times slower than straight-line code which makes it a poor choice for control flow. To quote the CLR team, "Exceptions should be exceptional."&lt;/p&gt;
</content>
      <post-name>HttpWebRequest GetResponse() Gotcha's</post-name>
      <categories>
        <category ref="0" />
        <category ref="1" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="f286b731-1603-41f2-94fc-49dc8b7d2ea0" date-created="2006-12-18T02:10:30.5111947Z" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=f286b731-1603-41f2-94fc-49dc8b7d2ea0" type="normal">
      <title>Testing with WB Editor2</title>
      <content>&lt;p&gt;    Testing with &lt;a href="http://www.wbeditor.com/"&gt;WB Editor 2&lt;/a&gt;. This editor looks and works better than many of the others I've tested with. It appears to use FTP to upload images instead of the MetaWeblog API (bummer). It supports draft mode and multiple blogs. For some reason there are no tool tips on the toolbar. Makes it a little difficult to figure out what some of the buttons do. Good feel overall.&lt;/p&gt;&lt;p&gt;     &lt;/p&gt;</content>
      <post-name>Testing with WB Editor2</post-name>
      <categories>
        <category ref="2" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="41179800-b9ca-4d59-af3e-73b79bf2e349" date-created="2006-12-18T01:53:15.5870672Z" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=41179800-b9ca-4d59-af3e-73b79bf2e349" type="normal">
      <title>Testing with w.bloggar</title>
      <content>
		&lt;p&gt;This entry demonstrates &lt;a href="http://blueonionsoftware.com/Bloget.aspx"&gt;Bloget&lt;/a&gt; working with &lt;a href="http://bloggar.com/index.php?itemid=265"&gt;w.bloggar&lt;/a&gt;. Not a bad little editor. The setup could be easier. I still like Live Writer better.&lt;br /&gt;&lt;br /&gt; &lt;a href="http://wbloggar.com" title="The best interface between you and your blog"&gt;&lt;img src="http://wbloggar.com/images/wbloggar-button1.gif" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
		&lt;p&gt; &lt;/p&gt;
</content>
      <post-name>Testing with w.bloggar</post-name>
      <categories>
        <category ref="2" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="8222100e-2cf5-4b20-9343-04c96b075fd2" date-created="2006-12-17T12:52:22.972268Z" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=8222100e-2cf5-4b20-9343-04c96b075fd2" type="normal">
      <title>Visual Studio 2005 Service Pack 1 (SP1) Released</title>
      <content>This SP release is a pretty major service pack, and incorporates a lot of bug-fixes and feedback from customers. Included built-in with the service pack is support for VS 2005 Web Application Projects (which we also made available as a separate download back in May). Check out the comments on Digg. It's rare that Digg comments are actually worth anything but serveral of them (including one by KarmasAgent) are refreshingly insightful. I'll be downloading this service patch later today and reporting my experiences. Also, it appears that Bloget is working with Digg's MetaWeblog implementation as evidenced by this entry. Cool!&lt;br&gt;&lt;br&gt;&lt;a href="http://weblogs.asp.net/scottgu/archive/2006/12/15/visual-studio-2005-service-pack-1-sp1-released.aspx"&gt;read more&lt;/a&gt; | &lt;a href="http://digg.com/programming/Visual_Studio_2005_Service_Pack_1_SP1_Released"&gt;digg story&lt;/a&gt;</content>
      <post-name>Visual Studio 2005 Service Pack 1 (SP1) Released</post-name>
      <categories />
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="4ad76622-a494-4f85-9198-40d7d3875d72" date-created="2006-12-17T03:30:02.1707062Z" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=4ad76622-a494-4f85-9198-40d7d3875d72" type="normal">
      <title>Testing Ecto</title>
      <content>
		&lt;p&gt;
				&lt;a href="http://ecto.kung-foo.tv/index.php"&gt;Ecto&lt;/a&gt; is an offline blggonig editor. Testing to see if it works with &lt;a title="Bloget, an ASP.NET blogging control" href="http://blueonionsoftware.com/bloget.aspx"&gt;Bloget&lt;/a&gt;. Looks like it does. &lt;/p&gt;
		&lt;p&gt;I'm nearing completion of Alpha 3 now. I've added MetaWeblog support including the newMediaObject Api which makes it very nice for uploading images. Mostly documentation work left. I'll have to back fill the online editor to support these features as well but it's nice to see that my MetaWeblog implementation is working for the most part. &lt;/p&gt;
		&lt;p&gt;Once I wrap up Alpha 3 in the next couple days it's on to &lt;a href="http://wellformedweb.org/story/9"&gt;Comment Api&lt;/a&gt;, Timezones and &lt;a href="http://codeplex.com/Wiki/View.aspx?ProjectName=BlogML"&gt;BlogML&lt;/a&gt;. It just keeps getting better. &lt;/p&gt;
</content>
      <post-name>Testing Ecto</post-name>
      <categories>
        <category ref="2" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="e2739fc1-9042-4866-99e5-f85a1ff1d1f6" date-created="2006-12-15T15:55:40.7425034Z" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=e2739fc1-9042-4866-99e5-f85a1ff1d1f6" type="normal">
      <title>Bush Administration Clamps Down On Scientists</title>
      <content>
		&lt;p&gt;Politics aside this is just plain &lt;a title="Link to article" href="http://www.huffingtonpost.com/2006/12/13/bush-admin-clamps-down-o_n_36290.html" target="_blank"&gt;scary&lt;/a&gt;. To paraphrase the great senator Daniel Moynihan, "the Bush Administration is entitled to their own opinions, but they're not entitled to their own facts". &lt;/p&gt;
		&lt;blockquote style="BACKGROUND-COLOR: #f0f8ff"&gt;
				&lt;p&gt;The Bush administration is clamping down on scientists at the U.S. Geological Survey, the latest agency subjected to controls on research that might go against official policy. 
&lt;/p&gt;
				&lt;p&gt;New rules require screening of all facts and interpretations by agency scientists who study everything from caribou mating to global warming. The rules apply to all scientific papers and other public documents, even minor reports or prepared talks, according to documents obtained by The Associated Press.&lt;/p&gt;
		&lt;/blockquote&gt;
</content>
      <post-name>Bush Administration Clamps Down On Scientists</post-name>
      <categories>
        <category ref="6" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="4e843964-c8b3-483d-98d9-3f4ae3afec46" date-created="2006-12-15T00:03:04.4161966Z" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=4e843964-c8b3-483d-98d9-3f4ae3afec46" type="normal">
      <title>File.WriteAllBytes</title>
      <content>
		&lt;p&gt;The .NET runtime has so many features it is difficult to keep track. Just the other night, I need to write a byte[] to a file. I started out with something like this:&lt;/p&gt;
		&lt;div style="FONT-SIZE: 9pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: courier new"&gt;
				&lt;p style="MARGIN: 0px"&gt;
						&lt;span style="COLOR: blue"&gt;using&lt;/span&gt; (&lt;span style="COLOR: teal"&gt;FileStream&lt;/span&gt; stream = &lt;span style="COLOR: blue"&gt;new&lt;/span&gt;&lt;span style="COLOR: teal"&gt;FileStream&lt;/span&gt;(&lt;span style="COLOR: maroon"&gt;"myfile"&lt;/span&gt;, &lt;span style="COLOR: teal"&gt;FileMode&lt;/span&gt;.CreateNew))&lt;/p&gt;
				&lt;p style="MARGIN: 0px"&gt;{&lt;/p&gt;
				&lt;p style="MARGIN: 0px"&gt;    stream.Write(buffer, 0, buffer.Length);&lt;/p&gt;
				&lt;p style="MARGIN: 0px"&gt;}&lt;/p&gt;
		&lt;/div&gt;
		&lt;p&gt;Not bad but it is a little tedious. Then I discovered quite by accident that .NET 2.0 added helper methods to the System.File class including &lt;strong&gt;System.File.WriteAllBytes&lt;/strong&gt;.&lt;/p&gt;
		&lt;p&gt;Other "helper" methods include &lt;strong&gt;ReadAllBytes&lt;/strong&gt;, &lt;strong&gt;ReadAllLines&lt;/strong&gt;, &lt;strong&gt;ReadAllText&lt;/strong&gt;, &lt;strong&gt;WriteAllLines&lt;/strong&gt;, &lt;strong&gt;WriteAllText&lt;/strong&gt; and &lt;strong&gt;AppendAllText&lt;/strong&gt;. These methods are not hard to write as evidenced above, but they sure are handy none-the-less.&lt;/p&gt;
		&lt;p&gt;So now the example above becomes:&lt;/p&gt;
		&lt;p style="FONT-SIZE: 9pt; BACKGROUND: white; MARGIN: 0px; COLOR: black; FONT-FAMILY: courier new"&gt;
				&lt;span style="COLOR: teal"&gt;File&lt;/span&gt;.WriteAllBytes(&lt;span style="COLOR: maroon"&gt;"myfile"&lt;/span&gt;, buffer);&lt;/p&gt;
		&lt;p style="FONT-SIZE: 9pt; BACKGROUND: white; MARGIN: 0px; COLOR: black; FONT-FAMILY: courier new"&gt; &lt;/p&gt;
</content>
      <post-name>File.WriteAllBytes</post-name>
      <categories>
        <category ref="0" />
        <category ref="4" />
        <category ref="8" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="83191460-ce20-492f-9993-4359060d3fdf" date-created="2006-12-13T01:37:20.0780517Z" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=83191460-ce20-492f-9993-4359060d3fdf" type="normal">
      <title>Windows Live Writer Test</title>
      <content>
		&lt;p&gt;This entry tests &lt;a title="Windows Live Writer" href="http://ideas.live.com/programpage.aspx?versionId=4372c8c2-b76f-4d44-aea1-9835b61d8dc1"&gt;Microsoft's Windows Live Writer&lt;/a&gt; (WLW) with &lt;a title="Bloget - An ASP.NET Blogging Control" href="http://blueonionsoftware.com/Bloget.aspx"&gt;Bloget&lt;/a&gt;. Looks like things are working well. One major issue was getting categories to work. After hours of searching, I found that WLW wants a title and categoryid included in the struct of the metaWeblog.getCategories response. If you examine the RFC for the &lt;a href="http://www.xmlrpc.com/metaWeblogApi"&gt;MetaWebLog Api&lt;/a&gt; you'll find no such parameters. Why can't we adhere to the standard? The standard is as the standard does I suppose.&lt;/p&gt;
		&lt;p&gt;As for the WLW, it's pretty darn nice. It feels better than any of the other offline editors I've used to date. The interface just feels right for whatever reason. There are a few bugs but then again, it is beta software. Also, no spell checking as you type. Nice going Microsoft.&lt;/p&gt;
</content>
      <post-name>Windows Live Writer Test</post-name>
      <categories>
        <category ref="2" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="28710ebd-1c31-4e25-93de-15478bdf8cff" date-created="2006-12-10T15:10:18.9570938Z" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=28710ebd-1c31-4e25-93de-15478bdf8cff" type="normal">
      <title>Working with BlogJet</title>
      <content>
		&lt;p&gt;Ok, now I’m trying &lt;a href="http://blogjet.com/"&gt;BlogJet&lt;/a&gt;. Easy install and seems to support my implementation of metaWeblog. It had a little trouble with the metaWeblog.getCategories call I complained about earlier. It complained about a bad value but then later on, it seem to work just fine. Go figure. One disappointment right out gates is that it does not spell check as you type. Heck, even the Firefox browser does that. Oh, well, at least I can post for now. I’ll have to test image uploads later.&lt;/p&gt;
</content>
      <post-name>Working with BlogJet</post-name>
      <categories>
        <category ref="2" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="9f892a9c-ae47-4244-8f1e-ee725ae766b2" date-created="2006-12-10T01:56:31.0063234Z" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=9f892a9c-ae47-4244-8f1e-ee725ae766b2" type="normal">
      <title>Testing Performancing Plugin</title>
      <content>
		&lt;br /&gt;Testing the Performancing blogging plugin. This is a FireFox extension. It's supports &lt;a href="http://www.xmlrpc.com/metaWeblogApi"&gt;MetaWeblog API&lt;/a&gt; but not correctly. This is the second time I've found a bug in the implementation of MetaWeblog API which is really sad because it really is a simple protocol. Really guys, it's a one page specification. So what's the bug? Performancing passes boolean tags as true/false. The specification says it should be 1/0. That may not sound like a big deal but it does require putting special case code into my XmlRpc parser to deal with it. Really annoying and unnecessary.&lt;br /&gt;&lt;br /&gt;The other bug I see in almost all of the blog publishing tools with regard to MetaWeblog API implementation is returning categories as an array instead of struct. I agree that it probably makes more sense to return them as an array of values but the specification is quite clear that is should be a struct (actually, a struct of structs). Since it appears to be near universal (Microsoft even documents &lt;a href="http://msdn2.microsoft.com/en-us/library/ms812819.aspx"&gt;getCategories&lt;/a&gt; it as returning an array), I'll acquiesce, but it sure does make a mess of things.&lt;br /&gt;&lt;br /&gt;As for the tool itself, it's pretty basic. I'm going to try &lt;a href="http://www.blogjet.com/"&gt;BlogJet&lt;/a&gt; next which I hear is much better.&lt;br /&gt;&lt;br /&gt;powered by &lt;a href="http://performancing.com/firefox"&gt;performancing firefox&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;</content>
      <post-name>Testing Performancing Plugin</post-name>
      <categories>
        <category ref="2" />
        <category ref="3" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="d47017e9-df0e-498d-a78c-f6fd8b159724" date-created="2006-12-07T02:02:45.6640074Z" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=d47017e9-df0e-498d-a78c-f6fd8b159724" type="normal">
      <title>Bloget does MetaWeblog API</title>
      <content>
		&lt;p&gt;And how do I know that you ask? Because this post is coming to you compliments of &lt;a href="http://blogmailr.com"&gt;blogmailr&lt;/a&gt;. And what is blogmailr you ask? Just a cool little service that allows you to post to your blog using email. It works with any blogging engine that understands the MetaWeblog API. It's all very technical but then that's why you read this blog to begin with.&lt;/p&gt;
		&lt;p&gt;I've got a few more methods to complete before I can say &lt;a href="http://blueonionsoftware.com/Bloget.aspx"&gt;Bloget&lt;/a&gt; supports &lt;a href="http://www.xmlrpc.com/metaWeblogApi"&gt;MetaWeblog API&lt;/a&gt; in it's entirety but as you can tell, it's well on its way. Pretty cool.&lt;/p&gt;
		&lt;p&gt;-- &lt;br /&gt;Things should be made as simple as possible, but not any simpler. -- Albert Einstein&lt;/p&gt;
		&lt;p&gt;Published with &lt;a href="http://www.blogmailr.com/"&gt;BlogMailr&lt;/a&gt;&lt;/p&gt;
</content>
      <post-name>Bloget does MetaWeblog API</post-name>
      <categories>
        <category ref="2" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="cb18a41a-3b94-4c93-b651-d791a6c82428" date-created="2006-12-02T12:40:03.4649678Z" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=cb18a41a-3b94-4c93-b651-d791a6c82428" type="normal">
      <title>Changing the Default Form Editor in VS 2005</title>
      <content>
		&lt;p&gt;I find it annoying that VS 2005 opens the Forms editor when you double-click on a source file for a form. Dammit Jim, I'm a programmer! I want to see the code. I searched high and low for a registry setting to change this but to no avail. Certainly there must be a way to change this. Then a colleague pointed out simple way. Right-click on the source file and select "Open with..." You'll get the following dialog.&lt;/p&gt;
		&lt;p&gt;
				&lt;img src="http://blueonionsoftware.com/blog/openwith.png" /&gt;
		&lt;/p&gt;
		&lt;p&gt;Select the code editor and click "Set as Default". Couldn't be easier.&lt;/p&gt;
</content>
      <post-name>Changing the Default Form Editor in VS 2005</post-name>
      <categories>
        <category ref="4" />
        <category ref="8" />
        <category ref="12" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="80f6894f-6df1-4cd7-90f9-96725185b33d" date-created="2006-11-26T12:21:33.5985827Z" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=80f6894f-6df1-4cd7-90f9-96725185b33d" type="normal">
      <title>Comment Reflower for Visual 2003 and 2005</title>
      <content>
		&lt;p&gt;I love little gems like this one. &lt;a href="http://commentreflower.sourceforge.net/"&gt;Comment Reflower&lt;/a&gt; is a plugin for Visual Studio 2003 and 2005 that word wraps comments in source files. It's fairly intelliegent in that it tries to stylize comments based on the content allowing you to easily create and maintain nice looking bullet lists, examples and preformatted areas. Release 1.4 adds a handy "align parameters" option that will neatly align method parameters across multiple lines.&lt;/p&gt;
		&lt;p&gt;Comment Reflower is language neutral in implementation, and comes with initial settings to handle all the comment block types within C++/ C# and Visual Basic files, as well as settings to handle a number of common bullet points and all the Doxygen tag styles. However Comment Reflower is also fully configurable, so support for new languange types is easily added via the configuration GUI, shown below.&lt;/p&gt;
		&lt;p&gt;
				&lt;img src="http://commentreflower.sourceforge.net/BlockSettings.png" /&gt;
		&lt;/p&gt;
		&lt;p&gt;It's free, it's seemless and it just works. &lt;/p&gt;
</content>
      <post-name>Comment Reflower for Visual 2003 and 2005</post-name>
      <categories>
        <category ref="5" />
        <category ref="8" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="f37fbb23-b68b-4cde-88c5-657f0d50951c" date-created="2006-11-19T23:59:14.3444855Z" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=f37fbb23-b68b-4cde-88c5-657f0d50951c" type="normal">
      <title>Bloget Alpha 2 is Away...</title>
      <content>
		&lt;p&gt;Bloget Alpha 2 is ready for download. So what's new you ask? The two major new features of this release are Pingback support and logging. &lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.hixie.ch/specs/pingback/pingback"&gt;Pingback&lt;/a&gt; is a popular protocol that enables authors keep track of who is linking to, or referring to their articles simply by referencing them in the blog article. Most popular Web log engines support it.&lt;br /&gt;&lt;br /&gt;Logging is less sexy but equally useful. Most actions are logged now to text files and include things like administrative changes, new posts, editing, comments and of course Pingbacks. Not very sexy but really useful.&lt;br /&gt;&lt;br /&gt;There were numerous  little changes as well which will help with usability and long term maintenance of the program. Check the Changes.txt file in the distribution if you're interested. And as always, send feedback. It's the only way I know what you're thinking.&lt;/p&gt;
		&lt;p&gt;You can download it &lt;a href="http://blueonionsoftware.com/Downloads.aspx"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;- Mike&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
</content>
      <post-name>Bloget Alpha 2 is Away...</post-name>
      <categories>
        <category ref="2" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="537db7f6-0206-4b7b-9ae1-444914b12d06" date-created="2006-11-18T01:16:16.8636199Z" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=537db7f6-0206-4b7b-9ae1-444914b12d06" type="normal">
      <title>MSDN Wiki</title>
      <content>
		&lt;p&gt;Dr. Dobbs Portal has an &lt;a href="http://www.ddj.com/blog/windowsblog/archives/2006/11/msdn_wiki_whats.html"&gt;interesting interview&lt;/a&gt; with members of the MSDN Wiki team.&lt;/p&gt;
		&lt;blockquote dir="ltr" style="MARGIN-RIGHT: 0px"&gt;
				&lt;p&gt;The &lt;a href="http://msdnwiki.microsoft.com/en-us/mtpswiki/default.aspx"&gt;MSDN Wiki&lt;/a&gt; was launched last June with the goal of extending the documentation for VS2005 and the .NET Framework. Although the project doesn't truly wiki-fy the MSDN docs -- opening them up to global edit -- it does provide a forum for readers' comments and code snippets to augment the official docs. Additionaly the project lets users improve the text of the machine-translated, non-English versions of the documentation. In its first few months, many Microsoft insiders have posted hundreds of additional insights. The MSDN Wiki has RSS feeds, so you can stay on top of hot topics.&lt;/p&gt;
		&lt;/blockquote&gt;
		&lt;p&gt;
				&lt;br /&gt;
		&lt;/p&gt;
</content>
      <post-name>MSDN Wiki</post-name>
      <categories>
        <category ref="0" />
        <category ref="7" />
        <category ref="8" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="123ae2b2-3532-48fd-8190-0cc94dac976c" date-created="2006-11-15T01:22:20.6809051Z" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=123ae2b2-3532-48fd-8190-0cc94dac976c" type="normal">
      <title>Visual Studio 2005 on Vista</title>
      <content>Microsoft has posted &lt;a href="http://msdn.microsoft.com/vstudio/support/windowsvista/default.aspx"&gt;guidelines&lt;/a&gt; and FAQ's for using Visual Studio 2005 on Vista. Looks like you're out of luck if you're using Visual Studio 2002 or 2003.&lt;br /&gt;&lt;blockquote&gt;While we have made tremendous investments in Windows Vista to ensure backwards compatibility, some of the system enhancements, such as User Access Control, changes to the networking stack, and the new graphics model, make Windows Vista behave differently from previous versions of Windows.&lt;br /&gt;&lt;br /&gt;The changes will impact Visual Studio and thus we're unable to support Visual Studio .NET 2002 or Visual Studio .NET 2003 on Windows Vista.&lt;br /&gt;&lt;br /&gt;However, your existing .NET Framework 1.1 and 2.0 based applications will continue to work on Windows Vista, and will be able to take advantage of many of the new features available to Windows Vista applications.&lt;br /&gt;&lt;br /&gt;For more information about the impact of Windows Vista on Visual Studio please check:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://msdn.microsoft.com/vstudio/support/windowsvista/faq/"&gt;Visual Studio on Windows Vista FAQ&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn.microsoft.com/vstudio/support/windowsvista/normalperms/default.aspx"&gt;Visual Studio 2005 on Windows Vista Issue List - Running with normal user permissions&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn.microsoft.com/vstudio/support/windowsvista/adminperms/default.aspx"&gt;Visual Studio 2005 on Windows Vista Issue List - Running with elevated administrator permission&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;</content>
      <post-name>Visual Studio 2005 on Vista</post-name>
      <categories>
        <category ref="0" />
        <category ref="8" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="ab846bc8-ca83-4617-a38d-7269aa11c288" date-created="2006-11-13T19:58:14.0324995Z" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=ab846bc8-ca83-4617-a38d-7269aa11c288" type="normal">
      <title>Scobleizer on Vista</title>
      <content>Robert Scoble, notable blogging &lt;a href="http://en.wikipedia.org/wiki/Robert_Scoble"&gt;personality&lt;/a&gt; and former Microsoft employee, &lt;a href="http://scobleizer.com/2006/11/08/first-day-of-post-microsoft-sadness/"&gt;talks about his feelings&lt;/a&gt;  now that it Windows Vista has released to manufacturing. Of particular interest are comments 15 and 19, both from a WPF Program Manager at Microsoft. Most of the conversation centers around .NET and the lack of it in Vista.&lt;br /&gt;</content>
      <post-name>Scobleizer on Vista</post-name>
      <categories>
        <category ref="0" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="f624568c-e743-4cdd-b867-4f0eac2f9b10" date-created="2006-11-13T00:18:40.2305915Z" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=f624568c-e743-4cdd-b867-4f0eac2f9b10" type="normal">
      <title>CopySourceAsHtml</title>
      <content>
		&lt;p&gt;
				&lt;a href="http://www.jtleigh.com/people/colin/software/CopySourceAsHtml/"&gt;CopySourceAsHtml &lt;/a&gt;is a free Visual Studio 2005 add-in that lets you copy source code as HTML. It even preserves the color coding. CopySourceAsHtml addes itself to the right-click menu so it's easy to use. There are many options for formatting. Very handy for blog postings. Below is an example.&lt;/p&gt;
		&lt;div style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: Courier New"&gt;
				&lt;div style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: Courier New"&gt;
						&lt;div style="FONT-SIZE: 9pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: Courier New"&gt;
								&lt;p style="MARGIN: 0px"&gt;
										&lt;span style="COLOR: blue"&gt;private&lt;/span&gt;
										&lt;span style="COLOR: blue"&gt;void&lt;/span&gt; ReplySuccess(&lt;span style="COLOR: blue"&gt;string&lt;/span&gt; message)&lt;/p&gt;
								&lt;p style="MARGIN: 0px"&gt;{&lt;/p&gt;
								&lt;p style="MARGIN: 0px"&gt;  Page.Response.ContentType = &lt;span style="COLOR: maroon"&gt;"text/xml"&lt;/span&gt;;&lt;/p&gt;
								&lt;p style="MARGIN: 0px"&gt; &lt;/p&gt;
								&lt;p style="MARGIN: 0px"&gt;  &lt;span style="COLOR: teal"&gt;XmlWriterSettings&lt;/span&gt; xmlSettings = &lt;span style="COLOR: blue"&gt;new&lt;/span&gt;&lt;span style="COLOR: teal"&gt;XmlWriterSettings&lt;/span&gt;();&lt;/p&gt;
								&lt;p style="MARGIN: 0px"&gt;  xmlSettings.Encoding = &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; System.Text.&lt;span style="COLOR: teal"&gt;UTF8Encoding&lt;/span&gt;(&lt;span style="COLOR: blue"&gt;false&lt;/span&gt;);&lt;/p&gt;
								&lt;p style="MARGIN: 0px"&gt; &lt;/p&gt;
								&lt;p style="MARGIN: 0px"&gt;  &lt;span style="COLOR: blue"&gt;using&lt;/span&gt; (&lt;span style="COLOR: teal"&gt;XmlWriter&lt;/span&gt; writer = &lt;span style="COLOR: teal"&gt;XmlWriter&lt;/span&gt;.Create(OutputStream, xmlSettings))&lt;/p&gt;
								&lt;p style="MARGIN: 0px"&gt;  {&lt;/p&gt;
								&lt;p style="MARGIN: 0px"&gt;    writer.WriteStartDocument();&lt;/p&gt;
								&lt;p style="MARGIN: 0px"&gt;    writer.WriteStartElement(&lt;span style="COLOR: maroon"&gt;"methodResponse"&lt;/span&gt;);&lt;/p&gt;
								&lt;p style="MARGIN: 0px"&gt;    writer.WriteStartElement(&lt;span style="COLOR: maroon"&gt;"params"&lt;/span&gt;);&lt;/p&gt;
								&lt;p style="MARGIN: 0px"&gt;    writer.WriteStartElement(&lt;span style="COLOR: maroon"&gt;"param"&lt;/span&gt;);&lt;/p&gt;
								&lt;p style="MARGIN: 0px"&gt;    writer.WriteStartElement(&lt;span style="COLOR: maroon"&gt;"value"&lt;/span&gt;);&lt;/p&gt;
								&lt;p style="MARGIN: 0px"&gt;    writer.WriteElementString(&lt;span style="COLOR: maroon"&gt;"string"&lt;/span&gt;, message);&lt;/p&gt;
								&lt;p style="MARGIN: 0px"&gt;    writer.WriteEndDocument();&lt;/p&gt;
								&lt;p style="MARGIN: 0px"&gt;    writer.Flush();&lt;/p&gt;
								&lt;p style="MARGIN: 0px"&gt;  }&lt;/p&gt;
								&lt;p style="MARGIN: 0px"&gt;}&lt;/p&gt;
								&lt;p style="MARGIN: 0px"&gt; &lt;/p&gt;
						&lt;/div&gt;
						&lt;!--EndFragment--&gt;
				&lt;/div&gt;
		&lt;/div&gt;
</content>
      <post-name>CopySourceAsHtml</post-name>
      <categories>
        <category ref="5" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="dab71f95-217f-4e61-b8ca-0afc9c983d73" date-created="2006-11-07T13:59:49.6482723Z" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=dab71f95-217f-4e61-b8ca-0afc9c983d73" type="normal">
      <title>Election Day</title>
      <content>Election day is here. Did you vote? I did and I had to wait in line which is unusual in an off-year election. I'm a Democrat. Not like anyone reading this blog couldn't figure that out. The polling place where I vote is in the meeting hall of a local gun club (of which I'm a member). Talk about feeling out numbered. I'm probably the only thing colored blue within a half a mile of the place. Still, they put up with me mostly because I keep their web site up a running. If you're going to be different at least be useful :)&lt;br /&gt;&lt;br /&gt;And in the spirit of the day, I thought I dig up some Election Day triva to share.&lt;br /&gt;&lt;br /&gt;Election Day is the Tuesday on or after November 2nd. (sometimes it's listed as the first Tuesday after the first Monday).&lt;br /&gt;&lt;br /&gt;Why Election Day is the Day It Is:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;November was selected because the harvest work was done.&lt;/li&gt;&lt;li&gt;Tuesday was selected because many people had to travel the day before to reach the polling place. Since most people did not travel on Sunday for religious reasons, they did not want it to be on a Monday.&lt;/li&gt;&lt;li&gt;They did not want Election Day to fall on November 1st because it is All Saints Day.&lt;/li&gt;&lt;li&gt;They did not want Election Day to fall on the first of the month because many shop keepers did their books for the preceding month on the first.&lt;/li&gt;&lt;/ul&gt;Ronald Reagan received the greatest number of electoral votes of any President--525 in 1984&lt;br /&gt;&lt;br /&gt;In Oregon, all elections are vote-by-mail&lt;br /&gt;&lt;br /&gt;Election Day is a legal holiday in some states, including Delaware, Hawaii, Kentucky, Maryland, Montana, New Jersey, New York, Ohio, and West Virginia&lt;br /&gt;&lt;br /&gt;Democratic Representative John Conyers of Michigan recently introduced a bill in the House of Representatives that would make Election Day a national holiday, Democracy Day&lt;br /&gt;&lt;br /&gt;</content>
      <post-name>Election Day</post-name>
      <categories>
        <category ref="6" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="349374b7-6f1a-4fdb-975a-e4a55b2838fe" date-created="2006-11-03T01:43:47.8677929Z" approved="false" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=349374b7-6f1a-4fdb-975a-e4a55b2838fe" type="normal">
      <title>Pingback Test</title>
      <content>Testing &lt;a href="http://www.quietearth.us/webtools/pingback-tester.php"&gt;pingback&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Testing another &lt;a href="http://blueonionsoftware.com/Blog.aspx?bloget_mode=View&amp;amp;bloget_item=dab71f95-217f-4e61-b8ca-0afc9c983d73"&gt;pingback&lt;/a&gt;.&lt;br /&gt;</content>
      <post-name>Pingback Test</post-name>
      <categories>
        <category ref="2" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="d37fefa2-d8ba-42cf-ac75-47eef2d30c86" date-created="2006-11-02T00:07:06.8385516Z" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=d37fefa2-d8ba-42cf-ac75-47eef2d30c86" type="normal">
      <title>Testing ActiveX Controls in C#</title>
      <content>
		&lt;p&gt;Using COM in managed code can seem like uneasy truce at times. Take the AxHost wrapper class for instance. When using ActiveX controls in C#, Visual Studio will generate an AxHost wrapper class that builds a facade around the unmanaged code. Problem is, the constructor for this AxHost wrapper class doesn't actually check if it can create the control. Instead, the wrapper waits until a method is called that requires the actual ActiveX control and only then does it try to create it.&lt;/p&gt;
		&lt;p&gt;This "lazy" construction technique can cause problems. For instance, if the ActiveX control is not installed, the wrapper will raise an exception. As often as not, this exception occurs in the InitializeComponent() method of a Windows.Form control in an EndInit() call. There's not much you can do at that point but to kill the form and display an error message.&lt;/p&gt;
		&lt;p&gt;Such was the case for me recently. In this particular case the Form and the program could still meaningfully function despite the absence of the ActiveX control. The AxHost wrapper doesn't offer a good way to test if the control can be created. Calling AxHost.CreateControl() directly for instance raises an exception.&lt;/p&gt;
		&lt;p&gt;About the only sure-fire way I could test if the control was create-able was to create it. The code below does just that. It uses &lt;strong&gt;System.Activator&lt;/strong&gt;, one of those little nuggets buried in the .NET framework.&lt;/p&gt;
		&lt;p&gt;bool CanCreateComControl(Guid CLSID_Item)&lt;br /&gt;{&lt;br /&gt;    try&lt;br /&gt;    {&lt;br /&gt;        Type itemType = Type.GetTypeFromCLSID(CLSID_Item, true);&lt;br /&gt;        object item = System.Activator.CreateInstance(itemType);&lt;br /&gt;        System.Runtime.InteropServices.Marshal.ReleaseComObject(item);&lt;br /&gt;    }&lt;/p&gt;
		&lt;p&gt;    catch&lt;br /&gt;    {&lt;br /&gt;        return false;&lt;br /&gt;    }&lt;/p&gt;
		&lt;p&gt;    return true;&lt;br /&gt;}&lt;/p&gt;
		&lt;p&gt;Knowing ahead of time that the wrapper class would fail to create the control allowed me to gracefully degrade the functionality of the application and avoid aborting the creation of the form.&lt;/p&gt;
</content>
      <post-name>Testing ActiveX Controls in C#</post-name>
      <categories>
        <category ref="4" />
        <category ref="0" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="b1bd1a10-9ef9-4707-bfc0-03c4d8e90118" date-created="2006-11-01T01:39:23.4131499Z" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=b1bd1a10-9ef9-4707-bfc0-03c4d8e90118" type="normal">
      <title>Virus Radar On-Line</title>
      <content>
		&lt;p&gt;The makers of &lt;a href="http://www.eset.com"&gt;NOD32&lt;/a&gt;, a powerful Antivirus progam I &lt;a href="http://blueonionsoftware.com/Blog.aspx?bloget_mode=View&amp;amp;bloget_item=dbc5f63a-a63c-4e69-ac08-db52fc5a7e7f"&gt;wrote about earlier&lt;/a&gt;, have a nifty little Web site called &lt;a href="http://www.virus-radar.com"&gt;Virus Radar On-Line&lt;/a&gt;. It shows the status of email viruses over specified periods. They list the relative threats and give an overall indicator as to the current risk. &lt;/p&gt;
		&lt;p align="center"&gt;
				&lt;img src="http://blueonionsoftware.com/Blog/virusradar.png" /&gt;
		&lt;/p&gt;
		&lt;p&gt;There's also some active &lt;a href="http://www.virus-radar.com/info_enu.html"&gt;banners &lt;/a&gt;you can place on your site.&lt;/p&gt;
		&lt;p align="center"&gt;
				&lt;iframe id="IFrame" src="http://www.virus-radar.com/banner_top1_enu.html" frameborder="0" width="120" scrolling="no" height="163"&gt;
				&lt;/iframe&gt;
				&lt;iframe id="IFrame" src="http://www.virus-radar.com/banner_top5_enu.html" frameborder="0" width="120" scrolling="no" height="163"&gt;
				&lt;/iframe&gt;
				&lt;iframe id="IFrame" src="http://www.virus-radar.com/banner_tir_enu.html" frameborder="0" width="120" scrolling="no" height="163"&gt;
				&lt;/iframe&gt;
		&lt;/p&gt;
		&lt;p&gt; &lt;/p&gt;
</content>
      <post-name>Virus Radar On-Line</post-name>
      <categories>
        <category ref="7" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="dbc5f63a-a63c-4e69-ac08-db52fc5a7e7f" date-created="2006-10-31T00:11:31.7330183Z" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=dbc5f63a-a63c-4e69-ac08-db52fc5a7e7f" type="normal">
      <title>Day of the Virus</title>
      <content>
		&lt;p&gt;I received a call on Thursday from some friends who have a small medical practice. Apparently their computers were acting a little strange. I had helped setup their system 2 years earlier. When I arrived at the office, the situation was not good. The file server would not boot and other systems were barely usable.&lt;/p&gt;
		&lt;p&gt;I quickly isolated the computers from each other and the network and went to work. All systems were running the latest commercial version of AVG Anti-virus. Not good enough as it turned out. On one system, AVG detected viruses but could not isolate them. No sooner would I clean up the files and they would reinfect. I was not happy. AVG just would not block the reinfection.&lt;/p&gt;
		&lt;p&gt;
				&lt;img style="FLOAT: right" height="103" alt="Antivirus Software - Solutions" src="http://www.eset.com/images/Eset_index_solutions_02.gif" width="158" /&gt;Out of desperation, I loaded trial version of &lt;a href="http://www.eset.com"&gt;NOD32&lt;/a&gt;. It found the same viruses but was able to isolate them and keep the system from reinfecting. Score one for NOD32. Once things settled down I found that the restoration files the Windows keeps were also infected. This left me no choice but to do a repair install. It worked. I bought NOD32.&lt;/p&gt;
		&lt;p&gt;The viruses ripped through the office net and infected all systems. On the file server it took out the Master Boot Record which is why it would not boot. The other systems suffered from other issues. It took 9 hours to clean up 6 systems.&lt;/p&gt;
		&lt;p&gt;The good news is no data was lost. They backup regularly using a system I installed. Perhaps the biggest problem was that these systems were running as Admin. The reason was that the HP printers they were using would not print in Limited accounts. This was my fault. I had tried on several occasions to get these printers to work on Limited accounts. I curse HP for the crap driver software they ship with their systems. With renewed motivation and a few hours effort I finally figured out that if I set the printer ports to use IP addresses instead of the usual device name I could print in Limited accounts. Needless to say, all systems are now running in "Limited" accounts.&lt;/p&gt;
		&lt;p&gt;In the final analysis they were lucky mostly due good practices. Had we not had Admin privileges enabled the viruses might have been defeated. I should have been more persistent on the Limited account issue. Good backups (even though we didn't need them), regular updates and one very good software package made the difference.&lt;/p&gt;
		&lt;p&gt;As for AVG, I'm sorely disappointed. It let something in and once there, allowed it to spread. That's a fatal mistake in my book and I'm done with them. My new best friend is NOD32. If you believe the &lt;a href="http://www.eset.com/products/compare-NOD32-vs-competition.php"&gt;benchmarks and reports&lt;/a&gt;, it's the best thing going. It saved my bacon.&lt;/p&gt;
		&lt;p&gt;Having experienced the destructive force of computer viruses first hand has really hardened my attitude. This was a small office and it cost them almost a full day of business. I don't know about their revenue but I suspect it cost them thousands of dollars. Random attacks like this are really malicious and evil. If not terrorism, it comes darn close. &lt;/p&gt;
</content>
      <post-name>Day of the Virus</post-name>
      <categories>
        <category ref="12" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="87b4c97f-875b-42c7-b12d-f2c303c18a33" date-created="2006-10-28T05:27:33.2807315-07:00" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=87b4c97f-875b-42c7-b12d-f2c303c18a33" type="normal">
      <title>The Dilbert Blog Rocks</title>
      <content>I'm probably the last person on the planet to discover this but the &lt;a href="http://dilbertblog.typepad.com"&gt;Dlibert Blog&lt;/a&gt; rocks. It's way better than the comic and is very topical. The &lt;a href="http://dilbertblog.typepad.com/the_dilbert_blog/2006/10/clerics_and_ana.html"&gt;Clerics and Analogies&lt;/a&gt; post is an good example of the humor and thinking that goes into the posts. Hat's off to Scott Adams. Now if I can only convince Scott to dump that silly old &lt;a href="http://typepad.com"&gt;TypePad&lt;/a&gt; blog and use &lt;a href="http://BlueOnionSoftware.com/Bloget.aspx"&gt;Bloget&lt;/a&gt; instead.</content>
      <post-name>The Dilbert Blog Rocks</post-name>
      <categories>
        <category ref="6" />
        <category ref="2" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="19d1110f-70aa-476e-b0ae-b4dcedf3451c" date-created="2006-10-26T09:33:58.2113942-07:00" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=19d1110f-70aa-476e-b0ae-b4dcedf3451c" type="normal">
      <title>Remote Desktop Tips</title>
      <content>We recently switched from using Timbuktu to Remote Desktop to access servers where I work. In general, I like Remote Desktop better than Timbuktu. You get your own desktop and session distinct from other logons and you get to use your own logon credentials which is just one less account/password to have to remember.&lt;br /&gt;&lt;br /&gt;There are a couple of issues. First if you want to logo to the host server console, there is no obvious way. A bit of investigation and we found the following:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;mstsc.exe /console&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;When you logon using this command, you get the console desktop.&lt;br /&gt;&lt;br /&gt;The other issue is that the basic Windows 2003 Server is only licensed for two simultaneous logon's. We've found that users tend to close the window instead of logging out. To combat this, there are some handy group policies.&lt;br /&gt;&lt;br /&gt;Run gpedit.msc on the host server and  navigate to the Local Computer Policy | Computer Configuration | Administrative Templates | Windows Components | Terminal Services | Sessions policies.&lt;br /&gt;&lt;br /&gt;You'll find polices to automatically logout disconnected or idle sessions.&lt;br /&gt;</content>
      <post-name>Remote Desktop Tips</post-name>
      <categories>
        <category ref="12" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="e979fe16-a3bd-41e2-9ba2-171f7678e207" date-created="2006-10-22T11:12:26.8207262-07:00" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=e979fe16-a3bd-41e2-9ba2-171f7678e207" type="normal">
      <title>Bloget Alpha One is Away</title>
      <content>
		&lt;p&gt;As mentioned in an earlier blog, there comes a time in every software project when you have to shoot the developers (or in this case, myself) and ship.&lt;/p&gt;
		&lt;p&gt;BANG!&lt;/p&gt;
		&lt;p&gt;Ouch! Wasn't as bad as I thought it was going to be.&lt;/p&gt;
		&lt;p&gt;Like most things, the devil is in the details and writing your own blog software is no different. The more I work at it the longer my list of things to do gets. Still, there is something mildly intoxicating about writing Bloget that keeps me going.&lt;/p&gt;
		&lt;p&gt;Bloget is a bit different than some of the other ASP.NET blogging offerings in that it is an ASP.NET 2.0 control. Basically that means you have to place it in an existing ASP.NET Web page. It also doesn't use a database for storage but instead relies on XML files (similar to &lt;a href="http://dasBlog.net"&gt;dasBlog&lt;/a&gt; I imagine). It doesn't require modifying your Web.config and should run on shared hosting services like &lt;a href="http://GoDaddy.com"&gt;GoDaddy.com&lt;/a&gt;&lt;/p&gt;
		&lt;p&gt;You can read more about it &lt;a href="http://blueonionsoftware.com/Bloget.aspx"&gt;here&lt;/a&gt; and download it &lt;a href="http://blueonionsoftware.com/Downloads.aspx"&gt;here&lt;/a&gt;.&lt;/p&gt;
		&lt;p&gt;Have fun and send feedback.&lt;/p&gt;
		&lt;p&gt;- Mike&lt;/p&gt;
</content>
      <post-name>Bloget Alpha One is Away</post-name>
      <categories>
        <category ref="2" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="6b92006e-3ad7-41c5-85da-88ce818eec4c" date-created="2006-10-19T08:44:53.0122867-07:00" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=6b92006e-3ad7-41c5-85da-88ce818eec4c" type="normal">
      <title>Sending Email at a Future Date</title>
      <content>
		&lt;p&gt;Ever need to send an email at a future date? If so, here's a couple of sites that will schedule emails to be sent at a future date and they do it for free.&lt;/p&gt;
		&lt;p&gt;
				&lt;a href="http://futureme.org"&gt;http://futureme.org&lt;/a&gt;
				&lt;br /&gt;
				&lt;a href="http://www.mailtothefuture.com"&gt;http://www.mailtothefuture.com&lt;/a&gt;
		&lt;/p&gt;
</content>
      <post-name>Sending Email at a Future Date</post-name>
      <categories>
        <category ref="5" />
        <category ref="7" />
        <category ref="12" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="cccb2aec-4667-44b8-adc1-078c4dc9116a" date-created="2006-10-18T08:42:24.22849-07:00" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=cccb2aec-4667-44b8-adc1-078c4dc9116a" type="normal">
      <title>What is a Collection?</title>
      <content>
		&lt;p&gt;Mads Torgersen, a &lt;a href="http://www.microsoft.com"&gt;Microsoft&lt;/a&gt; product manager, posts an interesting &lt;a href="http://blogs.msdn.com/madst/archive/2006/10/10/What-is-a-collection_3F00_.aspx"&gt;blog article&lt;/a&gt; about collections and initializers in the upcoming release of &lt;a href="http://www.google.com/url?sa=U&amp;amp;start=1&amp;amp;q=http://download.microsoft.com/download/9/5/0/9503e33e-fde6-4aed-b5d0-ffe749822f1b/csharp%25203.0%2520specification.doc&amp;amp;e=9797&amp;amp;sig=__FxSOmKY_Z4MustIx_fZADp2xvfE="&gt;C# 3.0&lt;/a&gt;.  For instance, in C# 3.0 you can create and initialize a collection as follows:&lt;/p&gt;
		&lt;pre&gt;new myNames { "Mike", "Frank", "Sue");&lt;/pre&gt;
		&lt;p&gt;Just how this works and some of the discoveries Microsoft made about their own code makes for a good read (&lt;a href="http://blogs.msdn.com/madst/archive/2006/10/10/What-is-a-collection_3F00_.aspx"&gt;article&lt;/a&gt;).&lt;/p&gt;
</content>
      <post-name>What is a Collection?</post-name>
      <categories>
        <category ref="0" />
        <category ref="4" />
        <category ref="8" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="6ea5d642-eacd-4ee5-ab2d-ab25deccbcaa" date-created="2006-10-15T04:18:09.529428-07:00" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=6ea5d642-eacd-4ee5-ab2d-ab25deccbcaa" type="normal">
      <title>Science, Ignored Again</title>
      <content>
		&lt;p&gt;The &lt;a href="http://www.nytimes.com/2006/10/14/opinion/14sat1.html?ex=1318478400&amp;amp;en=040978f4d0578e1b&amp;amp;ei=5090&amp;amp;partner=rssuserland&amp;amp;emc=rss"&gt;New York Times Op/Ed&lt;/a&gt; section has a scathing article about the Bush administration rejecting the recommendations of experts inside and outside the government who had urged a significant tightening of federal standards regulating the amount of soot in the air. From the article:&lt;/p&gt;
		&lt;blockquote dir="ltr" style="MARGIN-RIGHT: 0px"&gt;
				&lt;p&gt;At issue were so-called fine particles, tiny specks of soot that are less than one-thirtieth the diameter of a human hair. They penetrate deep into the lungs and circulatory system and have been implicated in tens of thousands of deaths annually from both respiratory and coronary disease. The E.P.A., obliged under the Clean Air Act to set new exposure levels every five years, tightened the daily standard. But it left unchanged the annual standard, which affects chronic exposure and which the medical community regards as more important.&lt;/p&gt;
				&lt;p&gt;In so doing, the agency rejected the recommendation of its own staff scientists and even that of its Clean Air Scientific Advisory Council, a 22-member group of outside experts that had recommended a significant tightening of the standards. Stephen Johnson, the agency administrator, claimed there was “insufficient evidence” linking health problems to long-term exposure. He added that “wherever the science gave us a clear picture, we took clear action,” noting also that “there was not complete agreement on the standard.”&lt;/p&gt;
		&lt;/blockquote&gt;
		&lt;p&gt;Don't these guys ever get tired of these games? It's always the same argument. "I'm sorry, you can't absolutely, positively, show a 100% proof with no wiggle room for interpretation therefore I reject the entire argument out of hand even though anyone with a brain in his head can see that you're right." It's the "reasonable doubt" clause that we're so use to hearing from legal circles again. Except that as usual, it's not "reasonable", it's just doubt.&lt;/p&gt;
		&lt;p&gt;How is it we can wage war with the almost no credible evidence and then ignore mountains of evidence in a clean air recommendation? The answer is of course money. What drives me crazy is these guys are already rich to the point of dynastic wealth. How much more do they need?&lt;/p&gt;
		&lt;p&gt;Remember the 2000 census? I remember watching Senate speeches about how we can't trust "statistics" and that we should have a full, fair and honest count. Census counts have always under-counted and everyone knows it. But does that stop these guys? Hell no. They stand up at their podiums and pronounce the perniciousness of this "math" as a calculated attempt to distort the truth. The arguments are so thinly veiled as to be laughable.&lt;/p&gt;
		&lt;p&gt;It amazes me how arguments get twisted to favor whatever agenda is being put forth. What ever happened to well reasoned informed decisions? No, let's just ignore the fact finders and experts (unless they happen to agree with something we want) and add a few more millions to our own fortunes and call it a day. Sad. &lt;/p&gt;
</content>
      <post-name>Science, Ignored Again</post-name>
      <categories>
        <category ref="6" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="a611ecfa-b8a6-4bf4-bb31-10f064feb286" date-created="2006-10-13T16:32:47.5047121-07:00" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=a611ecfa-b8a6-4bf4-bb31-10f064feb286" type="normal">
      <title>X1 Desktop Search Now Free</title>
      <content>
		&lt;p&gt;I'm a little late to the party on this one but according to the &lt;a href="http://www.langa.com/blog/2006/10/best-indexed-search-tool-youve-never.htm#links"&gt;Langa Blog&lt;/a&gt;, X1 desktop search is now &lt;strong&gt;free&lt;/strong&gt; and has been since June of this year. Yahoo desktop search is based on &lt;a href="http://www.x1.com/download/"&gt;X1&lt;/a&gt;. It's a fast download weighing in at 12 MB. Installed in a snap and indexed my hard drive in less than 5 minutes compared to an hour for Google Desktop and Microsoft Desktop search. Apparently it phones home a lot but it can be turned off in the options menu. I let ZoneAlarm keep it off the net as well. Lightweight, fast and free. Hard to resist.&lt;/p&gt;
		&lt;p align="center"&gt;
				&lt;img src="http://elgan.com/langablog/x1.jpg" /&gt;
		&lt;/p&gt;
</content>
      <post-name>X1 Desktop Search Now Free</post-name>
      <categories>
        <category ref="5" />
        <category ref="12" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="e411405c-1ded-43ba-93a0-d157ef2e4d4a" date-created="2006-10-12T06:24:19.9345285-07:00" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=e411405c-1ded-43ba-93a0-d157ef2e4d4a" type="normal">
      <title>My First Comment Spam</title>
      <content>
		&lt;p&gt;I got my first comment spam the other day. Guess I'm no longer innocent and unknowing. It was rendered harmless because all input to Bloget is HTML encoded which makes the post look silly at best and gives the spammer no reference links. Still it's just a shame that you have to defend against these things.&lt;/p&gt;
		&lt;p&gt;This motivated me to start hacking in some basic spam protections. I'm not a fan of CAPTCHA's which is why you won't see one in Bloget. I'll probably add a hook for one if someone really needs it. And besides, CAPTCHA's not handicapped friendly. There are other measures you can take however, and without giving too much away, here are some measures I've recently added to Bloget.&lt;/p&gt;
		&lt;p&gt;Limit the number of comments per post. This is settable both globally and per post. It puts a cap on comments in case you have some bot going berserk on your site. Comment throttling keeps a poster from posting too often and comment aging disables comments on posts that have had no activity after a preset period of time.&lt;/p&gt;
		&lt;p&gt;All comments are emailed to the webmaster should you choose to enable it. The message indicates the posting, the comment and if it was posted to the blog. On the off chance that Bloget was too aggressive in it's spam protection, the web master can resubmit the post. It's a short term solution until I get to adding comment moderation. &lt;/p&gt;
		&lt;p&gt;There are other measures as well but like I said, I don't want to give too much away.&lt;/p&gt;
		&lt;p&gt;Bloget continues to improve. I keep thinking I'm close to a first release, then something like comment spam happens and I think, "I can't release without fixing that first." It's an occupational hazard I suppose. I worked with guy years ago who use to say, "There comes a time in every project when you have to shoot the developers and ship."&lt;/p&gt;
		&lt;p&gt;One of these days soon I'll pull the trigger. Really...&lt;/p&gt;
</content>
      <post-name>My First Comment Spam</post-name>
      <categories>
        <category ref="2" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="59df2559-630b-41a7-ae00-a2f1b5c47ffa" date-created="2006-10-09T18:36:00.7357373-07:00" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=59df2559-630b-41a7-ae00-a2f1b5c47ffa" type="normal">
      <title>EverNote</title>
      <content>
		&lt;p&gt;Note taking programs abound on the Internet and while I've tried many of them, I've certainly have not tried them all. Still I've tried enough of them (like Microsoft OneNote, Yuck!) to feel comfortable in recommending one. For the last 6 months I've been using &lt;a href="http://www.evernote.com/"&gt;EverNote&lt;/a&gt;. EverNote just works and that is perhaps the highest praise you can give any program. It serves as a personal database for me where I keep notes about projects, phone numbers, conversations, interesting Internet stuff, you name it. Hell, I even use it as an off line blogging tool. It's quiet, fast and doesn't get in my way.&lt;/p&gt;
		&lt;p&gt;
				&lt;img src="http://blueonionsoftware.com/Blog/evernote.png" /&gt;
		&lt;/p&gt;
		&lt;p&gt;EverNote simulates an endless strip of paper that you write notes on. You can navigate back and forth using scroll bars or more interestingly use the Time Band which allows you to scroll back and forth by time. Very handy if not a little difficult to describe.&lt;/p&gt;
		&lt;p&gt;Version 1.5 released October 4th, 2006 takes care of some nits I had with the earlier 1.1 version. It adds spell checking which makes it very handy for composing Blog entries, like this one. Adding categories to a note is a simple drag and drop operation. The previous method (still available) required selecting categories from a dialog. And password protection of notes or entire EverNote databases is now available. &lt;/p&gt;
		&lt;p&gt;And the best part? It's &lt;strong&gt;free&lt;/strong&gt;! There's a Plus version that allows free form drawing and handwriting recognition but I don't have a tablet PC so free works for me.&lt;/p&gt;
</content>
      <post-name>EverNote</post-name>
      <categories>
        <category ref="5" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="8418d6e8-8076-4ea0-8429-605753e9ad5b" date-created="2006-10-07T05:11:42.6136646-07:00" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=8418d6e8-8076-4ea0-8429-605753e9ad5b" type="normal">
      <title>Weather Gadgets</title>
      <content>
		&lt;p&gt;I wouldn't call myself a weather junkie, but then again I do like to keep up on the current conditions. To that end there are a few things I have around the house here that keep me informed about current weather conditions.&lt;/p&gt;
		&lt;p&gt;
				&lt;img style="FLOAT: right; MARGIN-LEFT: 10px" src="http://blueonionsoftware.com/Blog/firstalertradio.gif" /&gt;If you live in an area with occasional severe weather as I do, then a &lt;a href="http://www.ambientweather.com/index.html"&gt;weather radio&lt;/a&gt; provides some real peace of mind. Actually, these radios warn about more than the weather and also alert for national emergencies, terror alerts, tornadoes, thunderstorms, hurricanes, chemical spills, fires, natural and man-made disasters and even volcano warnings (no kidding). You'll want one with Specific Area Message Encoding (SAME) technology. SAME lets you program the receiver to alert you only for messages about where you live. Often this is by county but in more populated areas, this can be by city, city region or neighborhood. And even better choice is a Dual EAS/NWR receiver. In addition to the NOAA Weather Radio (NWR), the receiver monitors Emergency Alert System which includes messages for AMBER Alerts and 911 Call Outages.&lt;/p&gt;
		&lt;p&gt;I use the &lt;a href="http://www.ambientweather.com/fialwxemalra1.html"&gt;First Alert&lt;/a&gt; radio pictured above. It has several features I consider mandatory. It allows me to turn the alarm off for specific alerts. For instance, I'm not interested in hearing alarms for high pollen counts. However, it sill displays these alerts by illuminating an amber or red LED which are easily visible from across the room. It has two levels of sirens, loud and really loud. And it has a battery backup mode for when the power goes out.&lt;/p&gt;
		&lt;p&gt;The First Alert unit ships with all the alerts in siren mode so you'll have to spend some time programming the 50 some alerts this receiver responds to. The programming is tedious at best but at least it's only once.&lt;/p&gt;
		&lt;p&gt;Of all the radio's I surveyed, I liked the First Alert the best but it certainly could stand improvement. In addition to the difficult programming I mentioned, the scrolling LCD screen simply sucks. But then again, all the radios I surveyed had the same issue. My watch is more readable. The screens need to be much bigger and higher quality. Tuning the radio to a nearby station also requires a trip to the &lt;a href="http://www.nws.noaa.gov/nwr/"&gt;NOAA&lt;/a&gt; weather radio page to find the frequency of the radio station closest to your area. But for peace of mind and security, it's minor and only one-time inconvenience.&lt;/p&gt;
		&lt;p&gt;
				&lt;img style="FLOAT: left" src="http://blueonionsoftware.com/Blog/weatherwidget.png" /&gt;For the desktop, I like to use two &lt;a href="http://widgets.yahoo.com/"&gt;Yahoo! Desktop Widgets&lt;/a&gt;.  These stylish and small applications run on your desktop and continuously monitor the weather through your Internet connection. The standard weather widget is a like many other desktop weather applications displaying current conditions and forecasts. I also like the way it looks. The &lt;a href="http://widgets.yahoo.com/gallery/view.php?widget=35877"&gt;Weather Warning&lt;/a&gt; widget alerts you to NOAA weather alerts when they are posted. It's like a weather radio for your desktop. On more than one occasion at work I've had it alert me to conditions I was unaware of and allowed me to call my family at home to warn them.&lt;/p&gt;
		&lt;p&gt;One last cool and useful site is the Weather Underground's &lt;a href="http://www.wunderground.com/stationmaps/gmap.asp?zip=48103&amp;amp;wmo=99999"&gt;Personal Weather Stations Google Map&lt;/a&gt;. It's a collection of personal weather station information for a given area displayed on a Google Map. It gives you up to the minute, detailed weather information at a level of granularity (depending on where you live) not obtainable from the national weather service.&lt;/p&gt;
</content>
      <post-name>Weather Gadgets</post-name>
      <categories>
        <category ref="6" />
        <category ref="7" />
        <category ref="10" />
        <category ref="13" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="3ab087ad-df8d-4755-badd-99f6391401ce" date-created="2006-10-04T13:48:02.0268575-07:00" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=3ab087ad-df8d-4755-badd-99f6391401ce" type="normal">
      <title>Control.DrawToBitmap Method</title>
      <content>
		&lt;p&gt;A requirement from one of our clients required that I capture an image of a control to a bitmap. Being a Win32 programmer from days gone by I figured no problem. Grab a device context, do some bit blasting and I'm done. It's a little harder in .Net since you have to do a platform invoke for the BitBlt operation but very doable.&lt;/p&gt;
		&lt;p&gt;Well wouldn't you know it, just about the time I finish up the routine I discover that .Net 2.0 has a new method called &lt;a href="http://msdn2.microsoft.com/en-us/library/system.windows.forms.control.drawtobitmap.aspx"&gt;Control.DrawToBitmap&lt;/a&gt; that does this very thing.  There are a few restrictions like not working with RichText controls or ActiveX controls. Worked like a charm for me.&lt;/p&gt;
</content>
      <post-name>Control.DrawToBitmap Method</post-name>
      <categories>
        <category ref="0" />
        <category ref="8" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="40090fc1-949a-42f7-ab05-b8ba48eebdd1" date-created="2006-10-03T09:27:03.8193272-07:00" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=40090fc1-949a-42f7-ab05-b8ba48eebdd1" type="normal">
      <title>Tip for Finding Memory Leaks in C#</title>
      <content>
		&lt;p&gt;There are many tools and techniques for finding memory leaks in managed code. Some involve sophisticated tools like the &lt;a href="http://www.c-sharpcorner.com/Code/2004/Aug/CLRProfiler.asp"&gt;CLR Profiler&lt;/a&gt;. While I have found such techniques useful for bugs in the "wild", I have found a simpler technique that smokes out these errors during development. It's really two tips.&lt;/p&gt;
		&lt;p&gt;Use &lt;a href="http://www.gotdotnet.com/team/FxCop/"&gt;FxCop&lt;/a&gt; or the code analysis tool in VS 2005 Pro. It tells you so much about your code and finds objects that you forgot to dispose. Use it every day.&lt;/p&gt;
		&lt;p&gt;Put break points on your finalizers. If you write classes of any complexity, you likely have implemented the &lt;a href="http://msdn2.microsoft.com/en-us/library/fs2xkftw.aspx"&gt;dispose pattern&lt;/a&gt; for these objects. If not, you likely should. Add asserts to the finalizers or use break points and run your program as normal. Did you hit any finalizers (you see this mostly during program exit)? If so, these are good candidates for further examination. It's a good bet that if your finalizers are executing then your objects are living longer than they should.&lt;/p&gt;
		&lt;p&gt;Other interesting articles about Dispose Patterns&lt;/p&gt;
		&lt;p&gt;
				&lt;a href="http://haacked.com/archive/2005/11/18/ACloserLookAtDisposePattern.aspx"&gt;A Closer Look at the Dispose Pattern&lt;/a&gt;
				&lt;br /&gt;
				&lt;a href="http://www.bluebytesoftware.com/blog/PermaLink.aspx?guid=88e62cdf-5919-4ac7-bc33-20c06ae539ae"&gt;Dispose, Finalization and Resource Management&lt;/a&gt;
				&lt;br /&gt;
				&lt;a href="http://www.agileprogrammer.com/oneagilecoder/archive/2005/03/24/3065.aspx"&gt;The Dispose Pattern, Finalizers and Debug.Assert()&lt;/a&gt;
		&lt;/p&gt;
</content>
      <post-name>Tip for Finding Memory Leaks in C#</post-name>
      <categories>
        <category ref="0" />
        <category ref="4" />
        <category ref="8" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="33f07e9f-519f-45fb-819f-e6bf53b4a3b1" date-created="2006-10-01T04:58:08.2306472-07:00" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=33f07e9f-519f-45fb-819f-e6bf53b4a3b1" type="normal">
      <title>Writing Faster Managed Code: Know What Things Cost</title>
      <content>
		&lt;p&gt;Jan Gray of the Microsoft CLR Performance Team has published an excellent (and lengthy) &lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dndotnet/html/fastmanagedcode.asp"&gt;paper&lt;/a&gt; on how much operations like function calls and object allocation cost performance wise in managed code. This article has also appeared on SlashDot and Digg so you probably already know about. I've actually read the article and I can sincerely say that if you are a managed code programmer, it is definitely worth your time.&lt;/p&gt;
		&lt;p&gt;The article has lots of tables with numbers about the relative costs of operations. I glanced at these. More important to me are the techniques Gray outlines on how to attack stubborn performance problems using tools like the CLR Profiler. In another section, he talks about how hardware advances effect (or should effect) the code we write. Here's an excerpt I found enlightening.&lt;/p&gt;
		&lt;blockquote dir="ltr" style="MARGIN-RIGHT: 0px"&gt;
				&lt;p&gt;Back in the "good old days", circa 1983, processors were slow (~.5 million instructions/s), and relatively speaking, RAM was fast enough but small (~300 ns access times on 256 KB of DRAM), and disks were slow and large (~25 ms access times on 10 MB disks). PC microprocessors were scalar CISCs, most floating point was in software, and there were no caches.&lt;/p&gt;
				&lt;p&gt;After twenty more years of Moore's Law, circa 2003, processors are &lt;i&gt;fast &lt;/i&gt;(issuing up to three operations per cycle at 3 GHz), RAM is relatively very slow (~100 ns access times on 512 MB of DRAM), and disks are &lt;i&gt;glacially&lt;/i&gt; slow and &lt;i&gt;enormous&lt;/i&gt; (~10 ms access times on 100 GB disks). PC microprocessors are now out-of-order dataflow superscalar hyperthreading trace-cache RISCs (running decoded CISC instructions) and there are several layers of caches—for example, a certain server-oriented microprocessor has 32 KB level 1 data cache (perhaps 2 cycles of latency), 512 KB L2 data cache, and 2 MB L3 data cache (perhaps a dozen cycles of latency), all on chip.&lt;/p&gt;
				&lt;p&gt;In the good old days, you could, and sometimes did, count the bytes of code you wrote, and count the number of cycles that code needed to run. A load or store took about the same number of cycles as an add. The modern processor uses branch prediction, speculation, and out-of-order (dataflow) execution across multiple function units to find instruction level parallelism and so make progress on several fronts at once. &lt;/p&gt;
				&lt;p&gt;Now our fastest PCs can issue up to ~9000 operations per microsecond, but in that same microsecond, only load or store to DRAM ~10 cache lines. In computer architecture circles this is known as &lt;i&gt;hitting the memory&lt;/i&gt;&lt;i&gt;wall&lt;/i&gt;. Caches hide the memory latency, but only to a point. If code or data does not fit in cache, and/or exhibits poor locality of reference, our 9000 operation-per-microsecond supersonic jet degenerates to a 10 load-per-microsecond tricycle.&lt;/p&gt;
		&lt;/blockquote&gt;
		&lt;p dir="ltr"&gt;This is &lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dndotnet/html/fastmanagedcode.asp"&gt;article&lt;/a&gt; is definitely worth your time.&lt;/p&gt;
</content>
      <post-name>Writing Faster Managed Code: Know What Things Cost</post-name>
      <categories>
        <category ref="0" />
        <category ref="8" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="b2ea48ca-19e5-4274-86f2-68775b890a61" date-created="2006-09-29T11:20:43.3297429-07:00" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=b2ea48ca-19e5-4274-86f2-68775b890a61" type="normal">
      <title>Does Multitasking Make Us Stupid?</title>
      <content>
		&lt;p&gt;Jeff Atwood has an &lt;a href="http://www.codinghorror.com/blog/archives/000691.html"&gt;excellent article&lt;/a&gt; on multitasking and how it makes us stupid or at least keeps us from doing real work. I'd like to tell you more but I'm too busy doing other things...&lt;/p&gt;
</content>
      <post-name>Does Multitasking Make Us Stupid?</post-name>
      <categories>
        <category ref="6" />
        <category ref="8" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="c9ea330e-baba-4f23-ae22-02b245f420ed" date-created="2006-09-28T15:28:28.3257403-07:00" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=c9ea330e-baba-4f23-ae22-02b245f420ed" type="normal">
      <title>Wireless Laptop won't Print to Networked Printer (Solved!)</title>
      <content>
		&lt;p&gt;Well this might be obvious to a many of you out there but it had me stumped for a while. My corporate laptop works fine on my home wireless network except I can't print. I could ping the printer and the printer install program could also detect the printer but all attempts to print failed. It finally dawned on me to turn on the pop-up alerts in ZoneAlarm, the corporate firewall software installed on the laptop and try to print again. Sure enough, spoolsve.exe was being blocked. But why?&lt;/p&gt;
		&lt;p&gt;Well, as it turns out the laptop, when running on my home network is in the Internet zone. By default, ZoneAlarm blocks the print spooler in this zone. It's easy to fix. Here's a screen shot of what has to change.&lt;/p&gt;
		&lt;p&gt;
				&lt;img src="http://blueonionsoftware.com/Blog/zonealarm.png" /&gt;
		&lt;/p&gt;
		&lt;p&gt;Now the question is what are the security risks with enabling this setting? I don't know. Perhaps someone out there can comment?&lt;/p&gt;
</content>
      <post-name>Wireless Laptop won't Print to Networked Printer (Solved!)</post-name>
      <categories>
        <category ref="12" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="9c6d8756-2ac9-48bd-88b3-16593d8aedff" date-created="2006-09-28T08:02:19.5222545-07:00" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=9c6d8756-2ac9-48bd-88b3-16593d8aedff" type="normal">
      <title>IDF 2006: Terascale Processing Brings 80 Cores to your Desktop</title>
      <content>
		&lt;p&gt;PC Perspective is running an interesting &lt;a href="http://www.pcper.com/article.php?aid=302&amp;quot;&amp;gt;terascale" temp_href="http://www.pcper.com/article.php?aid=302&amp;quot;&amp;gt;terascale"&gt;article&lt;/a&gt; on the future multicore processing. The article starts off:&lt;/p&gt;
		&lt;blockquote dir="ltr" style="MARGIN-RIGHT: 0px"&gt;
				&lt;p&gt;If you’ve never heard the term “&lt;a href="http://www.pcper.com/article.php?aid=302"&gt;terascale&lt;/a&gt;” before reading this article, you aren’t alone. Before attending this Fall’s IDF, I hadn’t been introduced to the term either. But after hearing and reading about it and doing a lot of research into the technology, I can tell you that we are going to walk away from this technology overview excited about the future of computing. &lt;/p&gt;
		&lt;/blockquote&gt;
		&lt;p&gt;The future of computing is multicore and we're not talking dual or quads here. Intel is estimating desktops will be running 80 core systems by 2011 with close to 32 billion transistors. And the architecture will be radically different as well.&lt;/p&gt;
		&lt;blockquote dir="ltr" style="MARGIN-RIGHT: 0px"&gt;
				&lt;p&gt;You should not think of this merely as SMP on a single die; these are vastly different cores with new platform requirements and software requirements. How so? How about memory bandwidth needs of 1.2 Terabytes/s compared to the 12 GB/s in current SMP systems? And what about latency levels of only 20 cycles for a terascale core compared to 400 cycles on a modern SMP system? Now you see the scales we are talking in here and the significance (and hurdles) these designs introduce.&lt;/p&gt;
		&lt;/blockquote&gt;
		&lt;p&gt;Wow, now that's a lot of  power. But as any super hero well knows, with great power comes great responsibility. There are some significant challenges for software developers in harnessing this power.&lt;/p&gt;
		&lt;blockquote dir="ltr" style="MARGIN-RIGHT: 0px"&gt;
				&lt;p&gt;There is no doubt that programming for a terascale processor like this is going to be difficult – we already see this in the move from single core processors, to dual core and now quad core. A programmer needs to be able to both IDENTIFY parallelism in a problem as well as MANAGE that parallelism so that data integrity is not lost during the application. &lt;/p&gt;
		&lt;/blockquote&gt;
		&lt;p&gt;At the PDC 2005 in Los Angles, Microsoft introduced some ideas for dealing with this large scalability. In some cases, future .Net frameworks will automatically detect parallelism in your program by unrolling loops or other repetitive processing. In other cases, there will be new language constructs to help the compiler better utilize multiple processors. It's clear that software developers are going to need new tools to manage these new architectures. I can't wait...&lt;/p&gt;
</content>
      <post-name>IDF 2006: Terascale Processing Brings 80 Cores to your Desktop</post-name>
      <categories>
        <category ref="8" />
        <category ref="10" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="05c02aad-7f9a-4acf-833e-711e9ca5db6e" date-created="2006-09-28T05:50:35.3058645-07:00" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=05c02aad-7f9a-4acf-833e-711e9ca5db6e" type="normal">
      <title>New York Times Reader Using .Net 3.0 Beta</title>
      <content>
		&lt;p&gt;The New York  Times has a new .Net 3.0 new &lt;a href="http://firstlook.nytimes.com/?category_name=times%20reader"&gt;reader in pre-beta&lt;/a&gt;. That's not a misprint, it's .Net 3.0. It's well worth the rather large .Net 3.0 download to check out this reader. It doesn't have all the eye-candy of other WPF demos. Instead it focuses on being a very good news reader and succeeds.&lt;/p&gt;
		&lt;p&gt;What impresses me the most is just how nice the fonts look. It's really hard to describe but it's something you notice right away. The transition effect moving from page to page is pleasant without calling too much attention to itself and the navigation is logical and very newspaper like.&lt;/p&gt;
		&lt;p&gt;Being pre-beta there are some issues like very slow downloads and no proxy settings but overall, it's a very pleasant experience.&lt;/p&gt;
		&lt;p&gt;Here's how the New Times describes it.&lt;/p&gt;
		&lt;blockquote dir="ltr" style="MARGIN-RIGHT: 0px"&gt;
				&lt;p&gt;Times Reader runs on Microsoft’s new Windows Presentation Foundation (WPF), which is built into the new Vista operating system and is included in the .Net 3.0 Framework service pack for Windows XP. If you are using Windows XP, the installer application will first install Net 3.0 Framework, a process that takes about ten minutes, and then install Times Reader, a process that takes about two minutes.&lt;/p&gt;
				&lt;p&gt;
						&lt;a href="http://firstlook.nytimes.com/?p=27#more-27"&gt;Read more …&lt;/a&gt;
				&lt;/p&gt;
		&lt;/blockquote&gt;
		&lt;p align="center"&gt;
				&lt;img src="/blog/nytimes.png" /&gt;
		&lt;/p&gt;
		&lt;p&gt;
		&lt;/p&gt;
		&lt;p&gt;The .Net 3.0 download was painless, didn't require a reboot and has not introduced any stability problems in my system. &lt;/p&gt;
</content>
      <post-name>New York Times Reader Using .Net 3.0 Beta</post-name>
      <categories>
        <category ref="0" />
        <category ref="7" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="24b93b82-f581-4a93-8fcb-6a8e02e38053" date-created="2006-09-27T12:39:09.4070984-07:00" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=24b93b82-f581-4a93-8fcb-6a8e02e38053" type="normal">
      <title>PrintForm Component 1.0</title>
      <content>
		&lt;p&gt;Looks like the VB team has been busy. This component allows you to print a windows form, clean and easy. C# programmers should not fret since this is .Net component, you can easily call it from an .Net compliant language. You can also print to a file which contains encapsulated postscript. From the &lt;a href="http://msdn2.microsoft.com/en-us/vbasic/aa701261.aspx"&gt;website&lt;/a&gt;.&lt;/p&gt;
		&lt;blockquote dir="ltr" style="MARGIN-RIGHT: 0px"&gt;
				&lt;p&gt;In Visual Basic 6.0, you were able to create a very easy report for your users by simply printing the form. &lt;/p&gt;
				&lt;p&gt;Now with the new PrintForm component you can once again lay out the Windows Form exactly as you want it and allow your users to print it as a quick report simply by calling the Print method on this new component.&lt;/p&gt;
		&lt;/blockquote&gt;
		&lt;p dir="ltr" style="MARGIN-RIGHT: 0px"&gt;
				&lt;img height="449" src="http://msdn2.microsoft.com/en-us/vbasic/aa701261.PrintForm_Large2.jpg" width="730" /&gt;
		&lt;/p&gt;
		&lt;p&gt; &lt;/p&gt;
</content>
      <post-name>PrintForm Component 1.0</post-name>
      <categories>
        <category ref="0" />
        <category ref="4" />
        <category ref="8" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="b47c659a-37db-44bd-9803-a3386982c617" date-created="2006-09-26T05:45:31.6277538-07:00" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=b47c659a-37db-44bd-9803-a3386982c617" type="normal">
      <title>Female Space Tourist Phones Home</title>
      <content>
		&lt;p&gt;Some people just live incredible lives. Anari's story of coming to this country with nothing and becoming a mega-millionaire is just extraordinary. And unlike some, she is using her wealth to do and experience things the rest of us can only dream about. She recently called Google founder Larry Page from the International Space Station.&lt;/p&gt;
		&lt;blockquote dir="ltr" style="MARGIN-RIGHT: 0px"&gt;
				&lt;p&gt;Today &lt;a class="blines3" title="Link outside of this blog" href="http://anoushehansari.com/" target="Bwindow"&gt;Anousheh Ansari&lt;/a&gt;, the first female private space explorer, called the Googleplex from the &lt;a class="blines3" title="Link outside of this blog" href="http://www.nasa.gov/mission_pages/station/main/index.html" target="Bwindow"&gt;International Space Station&lt;/a&gt;. (We're nervously awaiting the long-distance bill.) Larry Page took the call. The topics ranged from what Anousheh forgot to pack (her husband!) to her hopes for the future of space exploration. I took notes. Here are some highlights:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://googleblog.blogspot.com/2006/09/our-call-from-space.html"&gt;more...&lt;/a&gt;&lt;/p&gt;
		&lt;/blockquote&gt;
</content>
      <post-name>Female Space Tourist Phones Home</post-name>
      <categories>
        <category ref="6" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="9f548d29-f635-4197-9e28-4a20040747bd" date-created="2006-09-25T13:29:22.6323924-07:00" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=9f548d29-f635-4197-9e28-4a20040747bd" type="normal">
      <title>Electric Storage Solution Charges in 5 Minutes and Drives 500 Miles</title>
      <content>
		&lt;p&gt;I've blogged earlier about electric cars in "&lt;a href="/Blog.aspx?bloget_mode=view&amp;amp;bloget_item=18dd72fd-0854-41c0-a603-7d2379421129"&gt;The Future is Electric&lt;/a&gt;". I really want one and it looks like there are several technologies coming together that could make this possible. The latest innovation comes from a company in Texas called EEStor that has developed a storage device that can hold enough electricity to drive 500 miles and it only takes 5 minutes to recharge. The &lt;a href="http://money.cnn.com/2006/09/15/technology/disruptors_eestor.biz2/index.htm"&gt;story&lt;/a&gt; first broke on CNN Money.&lt;/p&gt;
		&lt;p&gt;Using something called an Ultra Capacitor, they store a charge without using hazardous chemicals or high pressure tanks. The cost of the engine is slightly more expensive (whatever that means) than a gasoline engine but getting rid of the need for gas more than compensates for the added expense. Could this be the breakthrough we've been waiting for in electrics?&lt;/p&gt;
</content>
      <post-name>Electric Storage Solution Charges in 5 Minutes and Drives 500 Miles</post-name>
      <categories>
        <category ref="10" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="0add80c1-d721-4f4a-9505-0dd1ee508061" date-created="2006-09-25T06:14:16.1060247-07:00" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=0add80c1-d721-4f4a-9505-0dd1ee508061" type="normal">
      <title>Why Does Vista Use All My Memory?</title>
      <content>Jeff Atwood has been my blogging hero as of late. His latest blog entry "&lt;a href="http://www.codinghorror.com/blog/archives/000688.html"&gt;Why Does Vista Use All My Memory?&lt;/a&gt;" explains the new memory strategy that Windows Vista employs. In it he explains Vista's strategy of using all the memory in your system all the time. He compares it to cache memory and explains why it's good for the system to behave this way. I never thought about system memory as a cache before. Interesting idea.</content>
      <post-name>Why Does Vista Use All My Memory?</post-name>
      <categories>
        <category ref="10" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="a4a53671-b949-4582-8688-b7de5a2d5453" date-created="2006-09-24T18:24:56.1088919-07:00" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=a4a53671-b949-4582-8688-b7de5a2d5453" type="normal">
      <title>The Final Frontier: The Limits of Scientific Inquiry are more Visible than Ever</title>
      <content>
		&lt;p&gt;Ten years after the publication of &lt;i&gt;The End of Science&lt;/i&gt;, John Horgan says the limits of scientific inquiry are more visible than ever.&lt;/p&gt;
		&lt;p&gt;
				&lt;a href="http://www.discover.com"&gt;Discover Magazine&lt;/a&gt; has an interesting &lt;a href="http://www.discover.com/issues/oct-06/cover/?page=1"&gt;article&lt;/a&gt; on about John Hogan's book &lt;em&gt;The End of Science&lt;/em&gt; which asserts that we are coming to the end of what he calls reductionist science and entering into an era of scientific applications. That there are limits on what we can know and perceive and that all the great discoveries of pure science have been made.&lt;/p&gt;
		&lt;p&gt;This is one of those books I have to put on my reading list but in the meantime let's examine some of the points in the article.&lt;/p&gt;
		&lt;blockquote dir="ltr" style="margin-right: 0px;"&gt;
				&lt;p&gt;
						&lt;strong&gt;Argument:&lt;/strong&gt; Reductionist science may be over, but a new kind of emergent science is just beginning. In his new book, A Different Universe, Robert Laughlin, a physicist and Nobel laureate at Stanford, concedes that science may in some ways have reached the "end of reductionism," which identifies the basic components and forces underpinning the physical realm. Nevertheless, he insists that scientists can discover profound new laws by investigating complex, emergent phenomena, which cannot be understood in terms of their individual components&lt;/p&gt;
		&lt;/blockquote&gt;
		&lt;p dir="ltr"&gt;Horgan launches into something about cellular automation pioneered by Stephan Wolfram. Right, lets just go for the lunatic fringe to show just how few new frontiers there are in science. Come on, do we really believe the Universe is just some big program running on a laptop somewhere in some uber Universe? Seems like a stretch. And how does that really support the argument that reductionist science is over. Did I miss something?&lt;/p&gt;
		&lt;blockquote dir="ltr" style="margin-right: 0px;"&gt;
				&lt;p style="text-indent: 0in; text-align: left;" align="left"&gt;
						&lt;b&gt;Argument:&lt;/b&gt; Science is still confronting huge remaining mysteries, like where the universe came from. Other reporters like to point out that there is "No End of Mysteries," as a cover story in U.S. News &amp;amp; World Report put it. But some mysteries are probably unsolvable. The biggest mystery of all is the one cited by Stephen Hawking in A Brief History of Time: Why is there something rather than nothing? More specifically, what triggered the Big Bang, and why did the universe take this particular form rather than some other form that might not have allowed our existence?&lt;/p&gt;
				&lt;p style="text-align: left;" align="left"&gt;Scientists' attempts to solve these mysteries often take the form of what I call ironic science—unconfirmable speculation more akin to philosophy or literature than genuine science. (The science is ironic in the sense that it should not be considered a literal statement of fact.) A prime example of this style of thinking is the anthropic principle, which holds that the universe must have the form we observe because otherwise we would not be here to observe it. The anthropic principle, championed by leading physicists such as Leonard Susskind of Stanford University, is cosmology's version of creationism&lt;/p&gt;
		&lt;/blockquote&gt;
		&lt;p style="text-align: left;" align="left"&gt;OK, so we have hit some really hard problems and we don't have good explanations. Scientists are people to and are given to "invent" explanations for things they don't fully understand.&lt;/p&gt;
		&lt;p style="text-align: left;" align="left"&gt;I'm not rejecting John Horgan's view entirely but I think in some sense it really comes down to the glass being half full rather then half empty. Just because we can't see the next great thing doesn't mean it's not there. To Horgan's credit, he concedes that he could just be wrong. But still, it's hard to see how science has come to an end. I credit much of this pessimism to what I call technological fatigue. So many discoveries have occurred in the last century that it becomes "expected" that great new discoveries must occur at an ever increasing rate.&lt;/p&gt;
		&lt;p style="text-align: left;" align="left"&gt;Perhaps maybe we have plateaued and we need to "workout" for a bit to break out to the next level. Look at it this way, 1000 years from now will we only understand the Universe, or the human mind, or pure science a little more than we do now? Seems unlikely given our past track record. I think 1000 years from now we'll look back at the 21st century as a formative but limited time in science.&lt;/p&gt;
		&lt;p style="text-align: left;" align="left"&gt; &lt;/p&gt;
</content>
      <post-name>The Final Frontier: The Limits of Scientific Inquiry are more Visible than Ever</post-name>
      <categories>
        <category ref="11" />
      </categories>
      <comments>
        <comment id="8a72aa9e-4d58-464b-b39f-8fa7f467f2c9" date-created="2007-01-23T21:13:35.1658249Z" user-name="JimmyxJackson" user-email="svinin.gaffar@mail.ru">
          <title>Thanks a lot for Your informative web-site</title>
          <content />
        </comment>
        <comment id="1158e6de-9d14-4193-8459-fd88c4583837" date-created="2007-01-24T00:36:40.3599311Z" user-name="Mike" user-email="mike@blueonionsoftware.com">
          <title>RE: The Final Frontier: The Limits of Scientific Inquiry are more Visible than Ever</title>
          <content />
        </comment>
        <comment id="6c43ad3c-0b99-4ec0-bda3-95be22e74754" date-created="2007-01-27T20:58:30.3791211Z" user-name="Malcolmxcv" user-email="loginpkm@cashette.com">
          <title>Hello!Your resource is great!</title>
          <content />
        </comment>
        <comment id="71e3e3a8-a582-4607-b1fd-ee6bdf6f4536" date-created="2007-01-30T19:34:56.7273519Z" user-name="Frankxc" user-email="loginstir@cashette.com">
          <title>Great work!</title>
          <content />
        </comment>
      </comments>
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="15ea8c0d-2319-417c-93c7-c45d65adf48e" date-created="2006-09-24T11:24:07.3467756-07:00" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=15ea8c0d-2319-417c-93c7-c45d65adf48e" type="normal">
      <title>BitPump Released</title>
      <content>
		&lt;p&gt;If you've spent anytime in the Freeware world, you have probably encountered &lt;a href="http://www.AnalogX.com"&gt;AnalogX&lt;/a&gt; at one time or another. If not, you owe it to yourself to visit this site. This guy has been pumping out freeware for years and it's really good stuff. AnalogX programs are always small, always reliable and just seem to work without much fuss.&lt;/p&gt;
		&lt;p&gt;BitPump is a BitTorrent without the hassles. I like it because it uses very little CPU and has an interface that even I can understand. Here's how the author describes it.&lt;/p&gt;
		&lt;blockquote dir="ltr" style="MARGIN-RIGHT: 0px"&gt;
				&lt;p&gt;BitPump is basically a light weight, high performance BitTorrent download client. It supports many of the same features that other common clients do, such as multiple downloads at the same time, a single port for all transfer, etc. Unlike most of the others, you also can do some interesting things, such as switch between either a download manager type of GUI, or a dialog type of GUI (similar to the normal IE download dialog). If it sounds interesting to you, head on over to the &lt;a href="http://www.analogx.com/contents/download/network.htm"&gt;Download/Network&lt;/a&gt; section and grab yourself a hot copy. &lt;/p&gt;
		&lt;/blockquote&gt;
		&lt;p&gt;I'm running it right now downloading a 1.8 GB file. Here's a screen shot.&lt;/p&gt;
		&lt;p&gt;
				&lt;img src="/Blog/bitpump.png" /&gt;
		&lt;/p&gt;
		&lt;p&gt;
				&lt;a href="http://www.analogx.com/contents/download/program/pcalc.htm"&gt;PCalc&lt;/a&gt; is another AnalogX gem worth considering. It's a programmer's calculator that is really useful. It's one of those programs I keep on every computer.&lt;/p&gt;
		&lt;p&gt;
				&lt;img src="http://www.analogx.com/contents/graphics/pcalc.jpg" /&gt;
		&lt;/p&gt;
</content>
      <post-name>BitPump Released</post-name>
      <categories>
        <category ref="5" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="8cc99a97-b1e6-483c-b9be-ee9ed3ee190d" date-created="2006-09-22T10:45:47.0322392-07:00" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=8cc99a97-b1e6-483c-b9be-ee9ed3ee190d" type="normal">
      <title>Bloget Progress Report #2</title>
      <content>
		&lt;p&gt;Work continues to go well on Bloget. I'm feature complete now for the first release which will be an alpha release of some sort. I'm still pretty happy with my little project as it continues to grow and take on new attributes. There are numerous little deployment issues I need to deal with now and one minor architectural issue.&lt;/p&gt;
		&lt;p&gt;The architectural issue involves how I persist tags or categories for entries. I'm seeing from my own use that this is a fairly important component of blogging so I want to optimize the storage solution so it can handle all the things I think it should do.&lt;/p&gt;
		&lt;p&gt;Perhaps the biggest time sink as of late was coming up with an integrated backup solution. Again, looking at how I use Bloget for this blog, I noticed that backing up was just enough of a chore that I wasn't doing it as often as I should. Granted it's just a directory of files but I had to fire up an FTP program, download the files, zip them and label the file. Just more effort than I'm willing to do regularly and I'm fairly anal about backups. Adding a feature to zip up the files and download them on demand turned out to be more work than I expected however.&lt;/p&gt;
		&lt;p&gt;I remembered that .Net 2.0 had compression routines but after a few minutes of working with them I realized that there was no archive support (like PKZip). Going to the Internet yielded the Sharp libraries but it looked like more of job to integrate than I wanted to deal with and there were some rumblings about it being buggy. So then I investigated the PKZip archive format. It's really quite simple so I wrote up an implementation only to discover that the DeflateStream algorithm is not compatible with the PKZip deflate algorithm. Nuts. Then I discovered that J# has a zip compatible archive. Coded that up. Worked great but when I uploaded to my Web hosting service (GoDaddy) I discovered the J# redistributables were not part of their 2.0 service. Nuts again. Finally, I returned to the Sharp libraries. It took all of 10 minutes to retro-fit the code into my code base. Works like a charm. Now I can log into the Administration panel in Bloget, click a button, and one zip file is formatted and presented downloaded. The only downside is that it is 68K when compiled which literally doubled the size of my binary. Bummer.&lt;/p&gt;
		&lt;p&gt;Added some more features to comments. Comments can now be disabled globally or by posting. Also the maximum number of comments per post can be set. I'll add comment aging in the next release.&lt;/p&gt;
		&lt;p&gt;Documentation is going to be a bear as well. I've been putting it off. I actually try to write useful documentation for my products. It's work but users seem to appreciate it.&lt;/p&gt;
		&lt;p&gt;If you're still reading this it's a good bet you might be interested in Bloget. I need a few brave souls to test bloget. If you're interested, send me an email and tell me how you intend to use it and where you'll host it. - Mike&lt;/p&gt;
</content>
      <post-name>Bloget Progress Report #2</post-name>
      <categories>
        <category ref="0" />
        <category ref="1" />
        <category ref="2" />
        <category ref="4" />
        <category ref="8" />
      </categories>
      <comments>
        <comment id="df48663b-7c89-4883-90f6-5cac8ca63f84" date-created="2006-09-22T13:08:31.5177856-07:00" user-name="Wayne" user-email="Wayne@OurCurrentFuture.com">
          <title>RE: Bloget Progress Report #2</title>
          <content />
        </comment>
      </comments>
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="4a78ea03-8a8e-4a0e-b65d-6eab01ff512a" date-created="2006-09-21T06:32:35.7288279-07:00" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=4a78ea03-8a8e-4a0e-b65d-6eab01ff512a" type="normal">
      <title>Dibert Cartoon Hits Close to Home</title>
      <content>
		&lt;p&gt;This is just freaking hilarious. I can't tell you the number of conversations I've had with my wife that end like this.&lt;/p&gt;
		&lt;p&gt;
				&lt;a href="http://www.dilbert.com/comics/dilbert/archive/dilbert-20060921.html"&gt;Comic for 21 Sep  2006&lt;/a&gt;
		&lt;/p&gt;
		&lt;p&gt;
				&lt;img src="http://www.dilbert.com/comics/dilbert/archive/images/dilbert2006203590921.gif" /&gt;
		&lt;/p&gt;
</content>
      <post-name>Dibert Cartoon Hits Close to Home</post-name>
      <categories>
        <category ref="6" />
      </categories>
      <comments>
        <comment id="90945a99-17d5-4551-8042-017627cf9ec6" date-created="2007-02-02T23:19:35.8890215Z" user-name="arydnwl atsky" user-email="kpjzq@mail.com">
          <title>lbcaxh kdws</title>
          <content />
        </comment>
      </comments>
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="438b6275-b586-4561-a4c6-8a98de56ddee" date-created="2006-09-21T05:54:57.0679876-07:00" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=438b6275-b586-4561-a4c6-8a98de56ddee" type="normal">
      <title>When Understanding means Rewriting</title>
      <content>
		&lt;p&gt;Jeff Atwood has an excellent blog entry this morning called "&lt;a href="http://www.codinghorror.com/blog/archives/000684.html"&gt;When Understanding means Rewriting&lt;/a&gt;". In it he explains how many programmer's rewrite code in order to understand how it works. The premise is that the previous code is complex enough in nature that it's faster to rework the problem than to work with the current solution.&lt;/p&gt;
		&lt;p&gt;In the past, I tended to want to rewrite old code, but now I've developed different strategies to try and understand and work with old code.&lt;/p&gt;
		&lt;p&gt;1. Read the documentation. Sounds obvious but if the programmer is worth is salt he'll have left a few bread crumbs for you to follow.&lt;/p&gt;
		&lt;p&gt;2. Step through the code a few times. This doesn't take long and let's you visit lots of code is a short time.&lt;/p&gt;
		&lt;p&gt;3. Change something. Once I get a general idea of what is happening, change something trivial and see how it behaves. &lt;/p&gt;
		&lt;p&gt;4. Refactor something. One of the best tools I've found for doing this is FxCop. Since I'm about the only person I know who uses this tool (just kidding) it's for sure I'm going to find things right away. Again, this gets you engaged with the code and gives you some feel about the quality of what you're dealing with. If you're changes are breaking things like unit tests, it's a good bet you're in for major work. On the other hand, if you're changes are non-breraking, then perhaps you have something good here. Other targets for refactoring are classes with more than 300 lines of code or methods with more than 100 lines of code.&lt;/p&gt;
		&lt;p&gt;5. Take the attitude that you're here to improve, not remove. It takes a long time to really understand the problem and even longer to code it. Assuming you're working with competent people, give them the benefit of the doubt that they did their homework.&lt;/p&gt;
		&lt;p&gt;6. Finally, talk to programmer (if you have this luxury) and find out what issues they encountered. Often this leads insight into why things are structured the way they are.&lt;/p&gt;
</content>
      <post-name>When Understanding means Rewriting</post-name>
      <categories>
        <category ref="8" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="b9d18c55-55b8-4cca-8f53-c49af30001dc" date-created="2006-09-19T12:31:44.1480387-07:00" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=b9d18c55-55b8-4cca-8f53-c49af30001dc" type="normal">
      <title>Engine On a Chip May Beat the Battery</title>
      <content>
		&lt;p&gt;MIT researchers are putting a tiny &lt;a href="http://web.mit.edu/newsoffice/2006/microengines.html"&gt;gas-turbine engine inside a silicon chip&lt;/a&gt; about the size of a quarter. The resulting device could run 10 times longer than a battery of the same weight can, powering laptops, cell phones, radios and other electronic devices&lt;/p&gt;
</content>
      <post-name>Engine On a Chip May Beat the Battery</post-name>
      <categories>
        <category ref="10" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="3ed480c4-b9ef-41b0-8096-8eab3d5e2d7c" date-created="2006-09-19T07:58:08.6257373-07:00" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=3ed480c4-b9ef-41b0-8096-8eab3d5e2d7c" type="normal">
      <title>Apologize For Calling Me Violent Or I'll Kill You</title>
      <content>
		&lt;p&gt;I &lt;a href="/Blog.aspx?bloget_mode=view&amp;amp;bloget_item=ca03d6cf-2c84-4de5-aa07-3bd43dc7ecf7"&gt;wrote&lt;/a&gt; about this issue earlier. This &lt;a href="http://suspiria.org/2006/09/apologize_for_calling_me_viole.html"&gt;guy&lt;/a&gt; hits the mark in fewer words.
&lt;/p&gt;
		&lt;blockquote dir="ltr" style="MARGIN-RIGHT: 0px"&gt;
				&lt;p&gt;I'm only guessing here, but I'm pretty sure that in any of the Middle Eastern languages there must not be a word that means the same as the word "IRONY" in English. 
&lt;/p&gt;
				&lt;p&gt;On the heels of the Pope's comments concerning the violent aspects of Islam's founding (forced conversion or death), Muslims across the Middle East have expressed outrage that he would falsely accuse "The religion of peace" of such things by: 
&lt;/p&gt;
				&lt;p&gt;- Burning the Pope in effigy.&lt;br /&gt;- Burning 7 Christian churches to the ground.&lt;br /&gt;- Murdering a Catholic nun.&lt;br /&gt;- Threatening that this will lead to war.&lt;br /&gt;&lt;/p&gt;
				&lt;p&gt;If I didn't know better, I'd think this came from one of the sarcastic articles at TheOnion.com or a Saturday Night Live skit, but sadly (or is that frighteningly?) it's for real. &lt;/p&gt;
		&lt;/blockquote&gt;
</content>
      <post-name>Apologize For Calling Me Violent Or I'll Kill You</post-name>
      <categories>
        <category ref="6" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="713b045a-6b71-46b7-bafc-ab1232457451" date-created="2006-09-19T05:49:23.3603602-07:00" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=713b045a-6b71-46b7-bafc-ab1232457451" type="normal">
      <title>Picasa Update has New Online Features</title>
      <content>
		&lt;p&gt;I've always been a big fan of Picasa and now it's even better. Software that's good and free. Here's the announcement from Google.&lt;/p&gt;
		&lt;blockquote dir="ltr" style="MARGIN-RIGHT: 0px"&gt;
				&lt;p&gt;By A Googler &lt;/p&gt;
				&lt;p&gt;Posted by Michael Herf, Picasa Engineer &lt;br /&gt;&lt;br /&gt;I have 80,000 photos in &lt;a class="blines3" title="Link outside of this blog" href="http://picasa.google.com/" target="Bwindow"&gt;Picasa&lt;/a&gt;, Google's free photo organizer, but most of my friends haven't had a chance to see them yet. That's why I'm so excited about the new version of Picasa that came out today. It has a feature called &lt;a class="blines3" title="Link outside of this blog" href="http://picasaweb.google.com/" target="Bwindow"&gt;Picasa Web Albums&lt;/a&gt; that lets you post and share your photos online for free with just one click. You can show the world (or just your friends and family) what kinds of pictures you've been taking. And best of all, you can even download your friends' online photos right back to Picasa.&lt;br /&gt;&lt;br /&gt;I run around at parties and take photos of people, and now my friends can see the pictures online as soon as I post them. Rather than bugging me all the time to email them around (which I'm too lazy to do), now they're asking to have the bad shots deleted instead. Some of them even add online comments right to the photos themselves.&lt;br /&gt;&lt;br /&gt;We've also &lt;a class="blines3" title="Link outside of this blog" href="http://readme.picasa.com/public/releasenotes.html" target="Bwindow"&gt;fixed a whole bunch of things&lt;/a&gt; in Picasa. Folders finally work as you'd expect, so people who've kept their photos meticulously organized in folders and subfolders can see them displayed the same way in Picasa. And we've added a shiny new feature to photo-editing: Save. Your Picasa edits can now be preserved when using other programs. The save feature is even undoable, so you never lose your original files.&lt;br /&gt;&lt;br /&gt;And there's more -- you can import into any folder you like, make time-lapse sequences into movies, search by color, create a screensaver with beautiful visual effects, and even re-arrange Picasa's buttons. Oh, and we also made Picasa work with Google Earth, so you can put information about where you went on vacation into the photos themselves, and then, view your shots on a 3-D globe. Try it all out for yourself at &lt;a class="blines3" title="Link outside of this blog" href="http://picasa.google.com/" target="Bwindow"&gt;picasa.google.com&lt;/a&gt;.&lt;/p&gt;
		&lt;/blockquote&gt;
</content>
      <post-name>Picasa Update has New Online Features</post-name>
      <categories>
        <category ref="7" />
        <category ref="10" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="ca03d6cf-2c84-4de5-aa07-3bd43dc7ecf7" date-created="2006-09-18T06:06:26.6711467-07:00" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=ca03d6cf-2c84-4de5-aa07-3bd43dc7ecf7" type="normal">
      <title>Imagine No Religion</title>
      <content>
		&lt;p&gt;The words of John Lennon ring in my ears this morning as I drive to work. Last night, I watched how Muslim's expressed their rage over the Pope's recent comments about the prophet Mohammad's teachings being evil. I am sadly disappointed. Throughout the world, religious leaders are calling for apologies and last night one was forth coming and predictably, it wasn't enough. I saw pictures of protesters in the streets burning effigies and thrusting their fists in the air while calling for death. These people didn't want an apology, they wanted blood.&lt;/p&gt;
		&lt;p&gt;How is it that religion can call for truth and peace and forgiveness on one day and call for the violent death of non-believers on another day? And it's not just Islam. Religions around the world kill or maim women, suppress human rights and sexually assault defenseless, impressionable children. From what I've seen in my 40 plus years and my study of history, it's always been this way. The promise is for peace, love and spiritual enlightenment but the result is persecution, martyrdom and death. From where I stand religion is more about death and depravity than life and enlightenment.&lt;/p&gt;
		&lt;p&gt;So the Pope called somebody some bad names. Big deal. So somebody published some less than flattering pictures of a dead religious leader. Big deal. I'm tired at the moral outrage everyone fains whenever the slightest incursion on their belief is challenged. Where is the tolerance, the acceptance, the forgiveness? Why is it moral to condemn and even kill others but not moral to question something you can't see or touch? How does one reconcile such contradictions? My only conclusion is that people don't. They make a decision to believe something and then shut their brains off.&lt;/p&gt;
		&lt;p&gt;And so I drive to work knowing my "lack of faith" is at odds with the rest of the world and hoping the world may one day change. Imagine no religion...&lt;/p&gt;
</content>
      <post-name>Imagine No Religion</post-name>
      <categories>
        <category ref="6" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="5647712e-d1ed-4e95-9d53-3a0b66a2a49e" date-created="2006-09-15T05:53:56.0449225-07:00" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=5647712e-d1ed-4e95-9d53-3a0b66a2a49e" type="normal">
      <title>Including JavaScript Conditionally in ASP.Net</title>
      <content>
		&lt;p&gt;In the course of building this Web site I've wanted several JavaScripts I use for ads and hit counting to be disabled when I'm developing locally on my laptop. I looked for more than a few minutes and couldn't get a definitive answer which was a bit surprising (read annoying). Some suggested using Asp:Literal, others said that code-behind was the only way. I found an easier way. Maybe this is obvious to all you old-time ASP.Net hacks but it certainly didn't jump out at me.&lt;/p&gt;
		&lt;p&gt;The trick is to use something called a render block. You can look it up in the help for more details. There are limits to what you can do with render blocks but then anything significantly complex shouldn't be done in a render block in the first place. In my case, I wanted to suppress a hit counter script when running locally. Here's what I came up with.&lt;/p&gt;
		&lt;pre&gt;&amp;lt;%@ Page Language="C#" %&amp;gt;&lt;br /&gt;&amp;lt;% if (Request.IsLocal == false)&lt;br /&gt;    { %&amp;gt;&lt;br /&gt;      &amp;lt;script src="myscript.js" type="text/javascript"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;%  } %&amp;gt;&lt;/pre&gt;
		&lt;p&gt;The page directive goes at the top of the page. The render blocks are the portions between the &amp;lt;% %&amp;gt; delimiters.&lt;/p&gt;
</content>
      <post-name>Including JavaScript Conditionally in ASP.Net</post-name>
      <categories>
        <category ref="1" />
        <category ref="4" />
        <category ref="8" />
      </categories>
      <comments>
        <comment id="365194df-28ab-4f68-b96b-22d8e29f524d" date-created="2006-09-15T07:47:43.0479804-07:00" user-name="asp.net" user-email="asp@asp.net">
          <title>RE: Including JavaScript Conditionally in ASP.Net</title>
          <content />
        </comment>
        <comment id="79667e6d-fdb2-4fd8-9fb6-4511a79d258a" date-created="2006-09-15T08:45:10.5308531-07:00" user-name="Mike" user-email="mike@blueonionsoftware.com">
          <title>RE: Including JavaScript Conditionally in ASP.Net</title>
          <content />
        </comment>
        <comment id="596b7d85-98a8-4db0-8f1a-4d41d2263098" date-created="2006-10-07T18:13:42.0765371-07:00" user-name="capeteritan" user-email="capeteritan@thepersonalshareware.com">
          <title>buy fioricet buy adipex</title>
          <content />
        </comment>
        <comment id="51a83b27-733b-4b3c-addd-13603ab9a324" date-created="2006-10-08T19:30:53.6991201-07:00" user-name="onesuperpuper" user-email="onesuperpuper@blah.org">
          <title>This is your last chance!</title>
          <content />
        </comment>
        <comment id="965c35c0-aee5-4ecc-a338-62b9a8791a14" date-created="2006-10-10T00:36:03.635826-07:00" user-name="veryverypoor" user-email="9y5cbuzwc0@nothing.com">
          <title>buy phentermine diet pill online, find phentermine diet pill </title>
          <content />
        </comment>
      </comments>
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="06dec429-8f90-4a20-a7a3-1c4a4138b2e3" date-created="2006-09-14T07:45:47.7409238-07:00" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=06dec429-8f90-4a20-a7a3-1c4a4138b2e3" type="normal">
      <title>Vista and the Rise of Flash Drives</title>
      <content>
		&lt;p&gt;
				&lt;a href="http://www.codinghorror.com/blog/"&gt;Jeff Atwood&lt;/a&gt; has an excellent article on a new feature in Vista called &lt;a href="http://www.microsoft.com/windowsvista/features/foreveryone/performance.mspx"&gt;ReadyBoost&lt;/a&gt;. Includes benchmarks for different flash drives and a discussion of hybrid hard drives that incorporate flash to boost performance.&lt;/p&gt;
		&lt;p&gt;
				&lt;a href="http://www.codinghorror.com/blog/archives/000680.html"&gt;http://www.codinghorror.com/blog/archives/000680.html&lt;/a&gt;
		&lt;/p&gt;
</content>
      <post-name>Vista and the Rise of Flash Drives</post-name>
      <categories>
        <category ref="10" />
      </categories>
      <comments>
        <comment id="6ab6ccc4-13c8-4485-9d08-82d126e2ed08" date-created="2007-02-03T07:26:23.4764356Z" user-name="ksynvujoz ualgcvkq" user-email="wnpr@mail.com">
          <title>wxpagz aglvs</title>
          <content />
        </comment>
      </comments>
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="ae02a68e-11b0-421e-92ef-a75dc41581ca" date-created="2006-09-14T05:37:03.9891934-07:00" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=ae02a68e-11b0-421e-92ef-a75dc41581ca" type="normal">
      <title>Ultimate List of Free Windows Software from Microsoft</title>
      <content>
		&lt;p&gt;Over 150 freebies including many I'd never heard of.&lt;/p&gt;
		&lt;p&gt;
				&lt;a href="http://bhandler.spaces.live.com/blog/cns!70F64BC910C9F7F3!1231.entry"&gt;http://bhandler.spaces.live.com/blog/cns!70F64BC910C9F7F3!1231.entry&lt;/a&gt;
		&lt;/p&gt;
</content>
      <post-name>Ultimate List of Free Windows Software from Microsoft</post-name>
      <categories>
        <category ref="5" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="235b16a8-0a85-4c5c-bb7e-992c1536b864" date-created="2006-09-13T13:35:57.958254-07:00" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=235b16a8-0a85-4c5c-bb7e-992c1536b864" type="normal">
      <title>The Mother of All Swiss Army Knives</title>
      <content>
		&lt;p&gt;One question: Why?&lt;/p&gt;
		&lt;p&gt;
				&lt;img alt="The Most Incredible Knife" src="http://www.outdoorlife.com/outdoor/images/wenger_264.jpg" border="0" /&gt;
		&lt;/p&gt;
		&lt;p&gt;
				&lt;a href="http://www.outdoorlife.com/outdoor/photogallery/article/0,20036,1145810_1304110,00.html"&gt;The Most Incredible Knife&lt;/a&gt;
		&lt;/p&gt;
</content>
      <post-name>The Mother of All Swiss Army Knives</post-name>
      <categories>
        <category ref="6" />
        <category ref="10" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="8a9ab95c-e1fb-428e-a94d-6d4e147bfeb6" date-created="2006-09-12T06:14:49.7703228-07:00" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=8a9ab95c-e1fb-428e-a94d-6d4e147bfeb6" type="normal">
      <title>Is it time to reconsider Google?</title>
      <content>
		&lt;p&gt;In his blog article "&lt;a href="http://news.com.com/2061-12572_3-6114238.html"&gt;It's time to reconsider Google?&lt;/a&gt;", Rafe Needleman discusses his experience with different search engines and concludes that Google is no longer the best. Needleman asks: &lt;/p&gt;
		&lt;blockquote dir="ltr" style="MARGIN-RIGHT: 0px"&gt;
				&lt;p&gt;Is it time to dump &lt;a href="http://www.google.com/"&gt;&lt;font color="#660066"&gt;Google&lt;/font&gt;&lt;/a&gt; as your search engine? Lately I've been finding myself drifting away from my old friend. Newer services do just as much -- or more -- than Google does, and they do it with nicer interfaces. &lt;/p&gt;
		&lt;/blockquote&gt;
		&lt;p&gt;He points out some interesting tidbits like the traffic features of  Windows Live and Yahoo and how Ask.com has pop-up images of sites. I actually went to all the sites he listed and frankly, I don't understand what he sees.&lt;/p&gt;
		&lt;p&gt;Take maps for instance. I picked my hometown, Ann Arbor, MI. Yahoo Maps and Windows Live show lots of detail but is it a better interface than Google Maps. I don't see how. I think the Google map looks better but Yahoo and Windows look good to so it is just a matter of taste I suppose. What I didn't like was how slow Yahoo and Windows Live were. Google Maps draws twice as fast on my box and zooms faster as well. Speed wins the day here.&lt;/p&gt;
		&lt;p&gt;Ask.com wasn't even a contest. The results were less relevant, the format harder to read and the speed again was much less than Google. And I actually like the ads since they are relevant and often times point to options I hadn't consider. There's a reason Google owns 90% of the market.&lt;/p&gt;
		&lt;p&gt;One point we do agree on is Google Desktop is a real drag on your system. I've tried it a couple of times only to have to uninstall it because of the drain it puts on my system. I have not tried Yahoo Desktop Search but then I generally stay away from Yahoo products because of  all the advertising and junk mail I end up getting when I use their stuff. &lt;/p&gt;
		&lt;p&gt;Sorry Rafe, but for this middle-aged techie, Google still rules.&lt;/p&gt;
</content>
      <post-name>Is it time to reconsider Google?</post-name>
      <categories>
        <category ref="7" />
      </categories>
      <comments>
        <comment id="6c9f9e16-1d2b-4ad4-a223-09e962b085c6" date-created="2006-09-20T08:13:25.4439178-07:00" user-name="JD" user-email="jd.hodges@gmail.com">
          <title>RE: Is it time to reconsider Google?</title>
          <content />
        </comment>
      </comments>
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="1ec1624f-6000-4df1-a63c-0dc7d8a0ffb1" date-created="2006-09-11T16:14:48.3539434-07:00" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=1ec1624f-6000-4df1-a63c-0dc7d8a0ffb1" type="normal">
      <title>Tiny Trick for ViewState Backed Properties</title>
      <content>
		&lt;p&gt;Phil Haacked's blog has an excellent article on using &lt;a href="http://haacked.com/archive/2006/08/07/TinyTrickForViewStateBackedProperties.aspx"&gt;the null coalescing operator with value types&lt;/a&gt;. I ran into to this very issue just the other night and like Phil quickly gave up. To summarize the trick.&lt;/p&gt;
		&lt;pre&gt;bool result = (bool)ViewState["WillSucceed"] ?? false;&lt;/pre&gt;
		&lt;p&gt;won't compile but just change the casting order to (note the extra parenthesis):&lt;/p&gt;
		&lt;pre&gt;bool result = (bool)(ViewState["WillSucceed"] ?? false);&lt;/pre&gt;
		&lt;p&gt;and your in. Excellent tip!&lt;/p&gt;
</content>
      <post-name>Tiny Trick for ViewState Backed Properties</post-name>
      <categories>
        <category ref="0" />
        <category ref="4" />
        <category ref="8" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="3c7f6da9-51a3-46d3-be6e-3c5b11991bae" date-created="2006-09-11T11:53:11.8082164-07:00" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=3c7f6da9-51a3-46d3-be6e-3c5b11991bae" type="normal">
      <title>New &amp;quot;PRAM&amp;quot; 30 Times Faster than Flash</title>
      <content>
		&lt;p&gt;"The EETimes describes the new &lt;a href="http://www.eetimes.com/news/semi/showArticle.jhtml?articleID=192700709"&gt;Samsung memory, phase-change RAM, called PRAM&lt;/a&gt;. Samsung is dubbing it 'Perfect RAM' because it is thirty times faster than NOR flash, ten times more durable — and cheaper to produce, to boot."  [&lt;a href="http://hardware.slashdot.org/article.pl?sid=06/09/11/1446234&amp;amp;from=rss"&gt;from Slashdot&lt;/a&gt;]&lt;/p&gt;
		&lt;p&gt;My flash thumb drive is plenty fast for the things I do. What's exciting about this is that it just might be fast enough and cheap enough to replace hard drives. No hard drives means instant hibernation, faster access, and higher reliability. Imagine a PC where the only moving part is the fan. Let's hope it's not a smoke and mirrors announcement.&lt;/p&gt;
</content>
      <post-name>New &amp;quot;PRAM&amp;quot; 30 Times Faster than Flash</post-name>
      <categories>
        <category ref="10" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="1718d451-2625-4dec-9335-ec0b00d002af" date-created="2006-09-11T10:22:38.9102902-07:00" approved="false" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=1718d451-2625-4dec-9335-ec0b00d002af" type="normal">
      <title>Dual Core Experience</title>
      <content>
		&lt;p&gt;About a month ago my company bought new computers for developement. Actually, they have a pretty enlightend policy where they update about a third of the developement machines every year. So now I have a brand new Micron Dual Core 3GHZ desktop with 2GB of memory and a decent graphics card. My experience with this new system is somewhat mixed as you'll see below.&lt;/p&gt;
</content>
      <post-name>Dual Core Experience</post-name>
      <categories>
        <category ref="10" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="73d19ac8-5071-4343-ab91-ec106fd82860" date-created="2006-09-09T15:50:13.6993239-07:00" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=73d19ac8-5071-4343-ab91-ec106fd82860" type="normal">
      <title>Miniature Earth</title>
      <content>
		&lt;p&gt;This is a fairly sobering view of the world boiled down to a few minutes of flash video. It really puts things into perspective.&lt;/p&gt;
		&lt;p&gt;
				&lt;a href="http://www.miniature-earth.com/"&gt;Miniature Earth&lt;/a&gt;
		&lt;/p&gt;
</content>
      <post-name>Miniature Earth</post-name>
      <categories>
        <category ref="6" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="97ad5259-ea26-4ce5-a7af-622636867911" date-created="2006-09-09T13:03:56.2608765-07:00" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=97ad5259-ea26-4ce5-a7af-622636867911" type="normal">
      <title>Bloget Progress Report</title>
      <content>
		&lt;p&gt;Well, the dog food just gets yummier and yummier so to speak. I've committed this blog to using the new Bloget engine. For those of you who have just joined us, Bloget is an ASP.Net blogging control I'm writing to manage my blog. It started out as a quick couple of ASP.Net pages and has now morphed into a full-blown ASP.Net server control. Like I said in an earlier posting, I'm having way to much fun with this project.&lt;/p&gt;
		&lt;p&gt;There is something about writing these Web controls that is really quite refreshing from my day to day applications development. I can't quite put my finger on it but I can see how folks who develop Web applications don't like application development.&lt;/p&gt;
		&lt;p&gt;I've added categories, fixed a lot of bugs, and cleaned up the admin functions. The list of features I want to add grows longer each day. I'm also learning much more about the blog space and what goes into writing one (from the development perspective). I never heard of a ping-back or a trackback until a few weeks ago. Of course, these are things I'll add as time goes on.&lt;/p&gt;
		&lt;p&gt;I do intend to release this soon as a product. I've been thinking about how to monetize it. One thought is to have a free and "Pro" version with more features. Another is to limit the number of postings to something like 100 which would give someone lots of time to live with Bloget before committing to it. If I do ask for money, it won't be much. Something like $9.95 seems reasonable. Any thoughts?&lt;/p&gt;
</content>
      <post-name>Bloget Progress Report</post-name>
      <categories>
        <category ref="1" />
        <category ref="2" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="0b105a47-822a-4f63-bd69-8ea4c486df2e" date-created="2006-09-09T07:48:33.5444039-07:00" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=0b105a47-822a-4f63-bd69-8ea4c486df2e" type="normal">
      <title>Microsoft .NET Framework 3.0 - Release Candidate 1</title>
      <content>
		&lt;p&gt;Time flies. Last November witnessed the release of .Net 2.0. I attended the PDC (Professional Developer's Conference) in September 2005 and saw all the 3.0 goodies. I thought it would be a lifetime before I saw them, but now here it is less than a year later and we have RC1. There are some really amazing new things in .Net 3.0. If you have not looked at LINQ (Language Integrated Query) do take the time. Some of my colleagues have already dismissed it thinking it will be some complicated, slow and almost useful feature but that's because they have not taken the time to examine it closely. I'm sure you won't make the same mistake.&lt;/p&gt;
		&lt;blockquote dir="ltr" style="MARGIN-RIGHT: 0px"&gt;
				&lt;p&gt;The Microsoft .NET Framework 3.0 (formerly known as WinFX), is the new managed code programming model for Windows. It combines the power of the .NET Framework 2.0 with new technologies for building applications that have visually compelling user experiences, seamless communication across technology boundaries, and the ability to support a wide range of business processes. These new technologies are Windows Presentation Foundation, Windows Communication Foundation, Windows Workflow Foundation, and Windows CardSpace (formerly code named "Infocard"). Microsoft plans to ship .NET Framework 3.0 as part of the Windows Vista operating system. In addition, Microsoft is making these technologies available on Windows XP and Windows Server 2003. The following Community Technology Preview of .NET Framework 3.0 enables you to continue experimenting with early builds of these technologies, get acquainted with the development experience, and provide feedback to Microsoft. For more information on these technologies, click &lt;a href="http://msdn.microsoft.com/winfx/technologies/default.aspx"&gt;&lt;font color="#0033cc"&gt;here&lt;/font&gt;&lt;/a&gt;. &lt;/p&gt;
		&lt;/blockquote&gt;
</content>
      <post-name>Microsoft .NET Framework 3.0 - Release Candidate 1</post-name>
      <categories>
        <category ref="0" />
        <category ref="4" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="55165d6a-1385-47bc-afed-df6982b8613b" date-created="2006-09-09T07:38:26.4194039-07:00" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=55165d6a-1385-47bc-afed-df6982b8613b" type="normal">
      <title>IronPython 1.0 Ships</title>
      <content>
		&lt;p&gt;Wow – Very cool to see &lt;a title="Link outside of this blog" href="http://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=IronPython&amp;amp;ReleaseId=423"&gt;IronPython reach V1 status&lt;/a&gt;… and I particularly love the fact that they ship a ton of code with it so you can see just how it is done… as well as run your favorite Python code at CLR speeds!&lt;/p&gt;
		&lt;p&gt;See what the &lt;a title="Link outside of this blog" href="http://www.technorati.com/search/IronPython"&gt;other bloggers are saying&lt;/a&gt;…&lt;/p&gt;
</content>
      <post-name>IronPython 1.0 Ships</post-name>
      <categories>
        <category ref="4" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="b0e332a7-0074-4d46-9910-79abe003c14d" date-created="2006-09-01T08:50:19.2426833-07:00" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=b0e332a7-0074-4d46-9910-79abe003c14d" type="normal">
      <title>Bloget is Live!</title>
      <content>
		&lt;p&gt;
				&lt;img style="FLOAT: right" src="/Blog/Images/seal.gif" /&gt;A few weeks back I mentioned that I was writing my own blogging software. My first version debuted on this site about a month ago. It was a collection of ASPX pages and some code behinds. Bloget is my second attempt and uses a different approach Bloget is a ASP.Net server control.  Installation is simple. First put the Bloget binary in your site's /bin directory. Then add a reference to the Bloget control on your page, specify a file for the blog data and your good to go. Bloget does not use a database. It saves all data in easy to understand XML files. Of course there is an admin page so you won't have to touch the files, but it's nice to know the option is there should the need arise. I'll be living with Bloget for the next couple of weeks as I tweak things and fix problems I encounter. After that, I'll release it so others can use it. Let me know if you experience problems viewing the site. I'll continue to post progress notes here.&lt;/p&gt;
		&lt;p&gt;As an aside, I found this cool &lt;a href="http://www.says-it.com/seal"&gt;site&lt;/a&gt; that makes emblems for free. Lots of fun.&lt;/p&gt;
</content>
      <post-name>Bloget is Live!</post-name>
      <categories>
        <category ref="2" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="8dc2290b-1cd5-4df2-b519-dc76bd49a64c" date-created="2006-08-31T07:51:24.077886-07:00" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=8dc2290b-1cd5-4df2-b519-dc76bd49a64c" type="normal">
      <title>Good Exception Management Rules of Thumb</title>
      <content>
		&lt;p&gt;Another great article from Scott Hanselman's blog. I've been involved in more "discussions" on exception management than I care to remember. It surprises me how many developers see them as evil, even to the point of banning them from code. Exceptions are not evil, they're a tool like anything else and it takes some understanding to wield them properly. Scott has some nice "&lt;a href="http://www.hanselman.com/blog/GoodExceptionManagementRulesOfThumb.aspx"&gt;Rules of Thumb&lt;/a&gt;" here that I totally agree with.&lt;/p&gt;
		&lt;ul&gt;
				&lt;li&gt;Exceptions are exceptional and should be treated as such. If something exceptional, unusual, or generally "not supposed to ordinarily happen" then an exception is a reasonable thing to do. 
&lt;ul&gt;&lt;li&gt;You shouldn't throw exceptions for things that happen all the time. Then they'd be "ordinaries". &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
		&lt;/ul&gt;
		&lt;p&gt;
				&lt;a href="http://www.hanselman.com/blog/GoodExceptionManagementRulesOfThumb.aspx"&gt;more...&lt;/a&gt;
		&lt;/p&gt;
</content>
      <post-name>Good Exception Management Rules of Thumb</post-name>
      <categories>
        <category ref="0" />
        <category ref="8" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="8c8676c2-4f0f-4a5c-ae84-e4c30ac43653" date-created="2006-08-31T07:50:35.95227-07:00" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=8c8676c2-4f0f-4a5c-ae84-e4c30ac43653" type="normal">
      <title>PimpFish - I'm not sure I get it</title>
      <content>Ran across this &lt;a href="http://pimpfish.com/"&gt;site&lt;/a&gt; today. PimpFish is a browser add on that let's you quickly download most images, flash movies and other visual content with a click of a button. They also have a feature called Slap Files which are collections of stuff you've downloaded. You then share your Slap Files with your buddies (I'm not going to even go there). It integrates well and does what it says but I'm not sure I get it. Perhaps it's just another example of being over "40". Can some one enlighten me?</content>
      <post-name>PimpFish - I'm not sure I get it</post-name>
      <categories>
        <category ref="3" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="05991b20-02ab-4cb1-9fbb-0e140f933930" date-created="2006-08-29T07:07:31.1311726-07:00" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=05991b20-02ab-4cb1-9fbb-0e140f933930" type="normal">
      <title>ZOHO - Online Office Applications </title>
      <content>
		&lt;p&gt;Another discovery today. &lt;a title="" href="http://zoho.com/" target=""&gt;ZOHO&lt;/a&gt; has a host of online tools for word processing, spreadsheets and presentations. They also have some other interesting tools like a planner, a CRM app, Online Polls and even an application creator. The site is super fast, even on my company's not so stellar Internet access. Most apps are free. Definitely worth a look. &lt;/p&gt;
</content>
      <post-name>ZOHO - Online Office Applications </post-name>
      <categories>
        <category ref="7" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="727f1d57-3233-4bd5-8a95-666a81db4b48" date-created="2006-08-29T07:07:00.2427223-07:00" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=727f1d57-3233-4bd5-8a95-666a81db4b48" type="normal">
      <title>10 Tips for Protecting Yourself at Hot Spots </title>
      <content>
		&lt;p&gt;Wi-Fi hot spots have become ubiquitous at cafe's, airports, restaurants, and other public location. In fact, more and more cities are creating hot spots that blanket entire metropolitan areas.&lt;/p&gt;
		&lt;p&gt;But every time you connect at a hot spot, you're asking for trouble. Hot spots are open networks that don't use encryption, which invites hacking and snooping. In addition, when you're on a hot spot you're connected to the same network as your fellow hot spot users, they can potentially weasel their way onto your PC and inflict damage. &lt;/p&gt;
		&lt;p&gt;But don't let that deter you from connecting. There's plenty you can do to keep yourself safe at hotspots. Just follow these ten tips. &lt;/p&gt;
		&lt;p&gt;
				&lt;a href="http://www.grafdom.com/news/NewsDetails.asp?catid=5&amp;amp;newsid=495"&gt;More...&lt;/a&gt;
		&lt;/p&gt;
</content>
      <post-name>10 Tips for Protecting Yourself at Hot Spots </post-name>
      <categories>
        <category ref="9" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="aed2ae46-7548-4e5f-83c6-95e00c6f3649" date-created="2006-08-25T17:59:03.59375-07:00" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=aed2ae46-7548-4e5f-83c6-95e00c6f3649" type="normal">
      <title>Anonymous Methods, Method Group Conversions and EventHandler</title>
      <content>
		&lt;p&gt;One of my favorite new features of C# 2.0 is Anynomous Methods. Anynomous Methods allow you to write event handlers inline instead of assigning a method. Often times this is handier, especially when you're doing something simple like incrementing a counter or displaying a message. &lt;/p&gt;
		&lt;p&gt;In .Net 1.1 it would have looked like this: &lt;/p&gt;
		&lt;p&gt;
				&lt;code&gt;public void button_OnClick(object sender, EventArgs ea)&lt;br /&gt;{ &lt;br /&gt;MessageBox.Show("Ouch!"); &lt;br /&gt;&lt;/code&gt;
				&lt;code&gt;} &lt;/code&gt;
		&lt;/p&gt;
		&lt;p&gt;
				&lt;code&gt;myButton.Click += new EventHandler(button_OnClick); &lt;/code&gt;
		&lt;/p&gt;
		&lt;p&gt;In .Net 2.0 it's a one liner: &lt;/p&gt;
		&lt;p&gt;
				&lt;code&gt;myButton.Click += delegate { MessageBox.Show("Ouch!"); };&lt;/code&gt;
		&lt;/p&gt;
		&lt;p&gt;This is a nice improvement for simple event handlers. More complex event handlers should use the older form. Also, the older form allows your code to be used by multiple event handlers. &lt;/p&gt;
		&lt;p&gt;
				&lt;strong&gt;Method Group Conversions&lt;/strong&gt;
		&lt;/p&gt;
		&lt;p&gt;If you look a bit closer at the previous example you may notice that an implicit type conversion occurs to match the delegate to the event handler. This implicit conversion is possible because the parameter list and return type of the delegate type are compatible with the anonymous method &lt;/p&gt;
		&lt;p&gt;An anonymous method can be implicitly converted to a compatible delegate type. C# 2.0 permits this same type of conversion for a method group, allowing explicit delegate instantiations to be omitted in almost all cases. Refering to the first example: &lt;/p&gt;
		&lt;p&gt;
				&lt;code&gt;myButton.Click += new EventHandler(button_OnClick);&lt;/code&gt;
		&lt;/p&gt;
		&lt;p&gt;can be written as: &lt;/p&gt;
		&lt;p&gt;
				&lt;code&gt;myButton.Click += button_OnClick;&lt;/code&gt;
		&lt;/p&gt;
		&lt;p&gt;When the shorter form is used, the compiler automatically infers which delegate type to instantiate, but the effects are otherwise the same as the longer form. &lt;/p&gt;
		&lt;p&gt;
				&lt;strong&gt;EventHandler&amp;lt;T&amp;gt;&lt;/strong&gt;
		&lt;/p&gt;
		&lt;p&gt;A final little goody is EventHander&amp;lt;T&amp;gt; class. This fellow saves you a few more keystrokes and consolidates an event and delegate declaration into one statement. For example:&lt;/p&gt;
		&lt;p&gt;
				&lt;code&gt;public delegate void MyEventHandler(object sender, MyEventArgs ea);&lt;br /&gt;public event MyEventHandler myEvent; &lt;/code&gt;
		&lt;/p&gt;
		&lt;p&gt;can be written as: &lt;/p&gt;
		&lt;p&gt;
				&lt;code&gt;public event EventHandler&lt;myeventargs&gt; myEvent;&lt;/myeventargs&gt;&lt;/code&gt;
		&lt;/p&gt;
		&lt;p&gt;An additional advantage of using EventHandler&amp;lt;T&amp;gt; is that you do not need to code your own custom delegate if your event generates event data. Furthermore, the .NET Framework needs only one implementation to support EventHandler regardless of the event data type you substitute for the generic type parameter. &lt;/p&gt;
		&lt;p&gt;Some of this may look like syntatic surgar but it really is laying the ground work for C# 3.0 where anonymous methods and generics really start to shine&lt;/p&gt;
</content>
      <post-name>Anonymous Methods, Method Group Conversions and EventHandler</post-name>
      <categories>
        <category ref="0" />
        <category ref="4" />
        <category ref="8" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="758742fa-4271-41d2-9bdd-cec3aabb0d16" date-created="2006-08-25T17:58:18.078125-07:00" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=758742fa-4271-41d2-9bdd-cec3aabb0d16" type="normal">
      <title>How to be a Developer and Remain Sane</title>
      <content>
		&lt;p class="author"&gt;I've been reading some of James Higgs blogs the last couple of days. I really like what he has to say on a lot of topics. I've been a developer now for 20 years and much of what he says here I agree with.&lt;/p&gt;
		&lt;p class="author"&gt;
				&lt;a href="http://staff.interesource.com/james/aug06/sane.htm"&gt;http://staff.interesource.com/james/aug06/sane.htm&lt;/a&gt;
		&lt;/p&gt;
</content>
      <post-name>How to be a Developer and Remain Sane</post-name>
      <categories>
        <category ref="6" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="c30e9d86-613c-4877-ac54-d5ee540348e9" date-created="2006-08-24T17:57:08.609375-07:00" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=c30e9d86-613c-4877-ac54-d5ee540348e9" type="normal">
      <title>LogMeIn.com - Realiable Remote Access</title>
      <content>Need a fast, free way to access your computer remotely? I regularly consult for my wife's home-based business supporting her clients computers which are of course remote. My tool of choice, &lt;a class="blines3" title="Link outside of this blog" href="http://logmein.com/" target="Bwindow"&gt;LogMeIn.com&lt;/a&gt;. This is an amazing service. It works through your Web browser, punches through firewalls like tissue paper, and keeps you informed about the overall health of your remote system. 
&lt;p align="center"&gt;&lt;img src="https://secure.logmein.com/images/header/logo-lmi.gif" /&gt;&lt;/p&gt;&lt;p&gt;The best part is that it is drop-dead simple to use. Go to LogMeIn.com and get a free account. Once that is is setup, add a computer to list of computers you can control. If the computer you want to control is the one you are sitting at, the LogMeIn.com downloads a java application to your system. It usually takes less than a minute. If the system you want to control is else where, LogMeIn.com asks for the email of the user and sends them an invite. Once they accept, the software is automatically downloaded and installed on the remote system and then appears on your "My Computers" list on their Web site.&lt;/p&gt;&lt;p&gt;After that, it's a point and click to remote control a system. You'll have to know the account and password of the system you are logging into of course.&lt;/p&gt;&lt;p&gt;LogMeIn.com's remote control has some nice features. I particularly like the screen resizing. It scales the remote screen to fit in the browser window. Another completely cool feature is remote printing. When you logged into the remote system they can make the default printer on the remote system point to your local printer. Now you can run applications remotely and print just as if you were sitting there. Ditto for the clipboard. Also, the connection is always encrypted using SSL which makes it safe for all sorts of uses like medical and legal applications.&lt;/p&gt;&lt;p&gt;The basic desktop remote control package is free (amazing). For a measly $10 per month you can bump up to the IT Pro version that gives you file transfer and an great assortment of remote system management tools that allow you to interact with the system without interfering with the remote user should they be using the system.&lt;/p&gt;&lt;p&gt;I been using LogMeIn.com for 2 years now and have found it to be reliable and consistent. Highly recommended.&lt;/p&gt;&lt;script src="http://feeds.feedburner.com/~s/blueonionsoftware?i=/BlogEntry.aspx?articleId=b9fa5163-67ab-4dca-8cf0-af0b9e1c2e95" type="text/javascript" charset="utf-8"&gt;&lt;/script&gt;</content>
      <post-name>LogMeIn.com - Realiable Remote Access</post-name>
      <categories>
        <category ref="7" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="a9e8e51e-9aba-427d-8d39-f2f7ebe4ddec" date-created="2006-08-23T17:55:00.5625-07:00" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=a9e8e51e-9aba-427d-8d39-f2f7ebe4ddec" type="normal">
      <title>Feed Burner - Eating Your Own Dog Food</title>
      <content>One of the interesting things I've found about blogging is the wealth of services that revolve around blogging. One of the more interesting services is &lt;a href="http://feedburner.com/"&gt;&lt;font color="#0000cc"&gt;FeedBurner&lt;/font&gt;&lt;/a&gt;. FeedBurner basically takes an RSS feed and enhances it. What's an  &lt;a href="http://en.wikipedia.org/wiki/RSS_(file_format)"&gt;&lt;font color="#0000cc"&gt;RSS&lt;/font&gt;&lt;/a&gt; feed you ask? Simply stated, it is a standard format for distributing syndicated content. Still confused? Look at this way, whenever a new entry is added to this blog, my code generates a snippet of XML that is easily consumed by other services. What other services, you ask? A news aggregator like &lt;a href="http://bloglines.com/"&gt;BlogLines&lt;/a&gt; (my favorite news reader) for instance can collect these feeds and present them in a consolidated format, but I digress.&lt;br /&gt;&lt;br /&gt;FeedBurner can take an &lt;a href="http://en.wikipedia.org/wiki/RSS_(file_format)"&gt;&lt;font color="#0000cc"&gt;RSS&lt;/font&gt;&lt;/a&gt; feed and decorate with extra features. For instance, if you look at the bottom of this article you'll see links to Email this feed, Digg it, add it to &lt;a href="http://del.icio.us/"&gt;del.icio.us&lt;/a&gt; and more. I didn't add those, FeedBurner did. Pretty cool and it didn't cost me anything.&lt;br /&gt;&lt;br /&gt;FeedBurner also keeps tracks of the number of subscribers and click-throughs. It's really an incredible service and it's free. In fact, if you are viewing this article on my blog's main page, you're looking at a FeedBurner version. Yep, I'm consuming my own feed (eating my own dog food so to speak). I'll eventually move away from this for other reasons but you have to admit, its an interesting and useful service.&lt;br /&gt;&lt;script src="http://feeds.feedburner.com/~s/blueonionsoftware?i=/BlogEntry.aspx?articleId=fde35ed4-1223-441d-96dc-00eecdd55a22" type="text/javascript" charset="utf-8"&gt;&lt;/script&gt;</content>
      <post-name>Feed Burner - Eating Your Own Dog Food</post-name>
      <categories />
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="7b04a151-2e71-408c-9328-22f19337b0d8" date-created="2006-08-22T17:53:15.609375-07:00" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=7b04a151-2e71-408c-9328-22f19337b0d8" type="normal">
      <title>Script# - Developing JavaScript in C#</title>
      <content>
		&lt;p&gt;Just picked this up on &lt;a href="http://dognetkicks.com/"&gt;DotNetKicks.com&lt;/a&gt;. This is great idea if it really works. I've written a lot of javascript and frankly it's tedious work. Having a real language and tools would be a boon to client side development&lt;/p&gt;
		&lt;blockquote&gt;
				&lt;p&gt;Script# brings the C# development experience (programming and tooling) to the JavaScript/Ajax world. &lt;/p&gt;
				&lt;p&gt;The Script# compiler is a C# compiler that generates JavaScript as its output instead of IL. A key goal of the compiler to produce readable JavaScript (as if you had authored it by hand), and would be comfortable deploying into real apps. Hence the translation works from C# source directly into JavaScript without an intermediate IL layer. The compiler can also produce equivalent, but much more compact script for use in release mode deployment. The compiler does not introduce any additional levels of abstraction, thereby allowing you full control of what your application does. In essense the best of script with the best of C#! &lt;/p&gt;
				&lt;p&gt;The Script# compiler can optionally be used with the Script# Framework that provides a more productive application development platform for larger, and more complex applications. &lt;/p&gt;
				&lt;p&gt;
						&lt;strong&gt;A Better Scripting Approach&lt;/strong&gt;
				&lt;/p&gt;
				&lt;p&gt;The fundamental goal was to improve the state of the art in scripting. This goes way beyond the usual things that come to mind at first thought: compile-time checking, and intellisense or statement completion. I do think these are super-useful, and would be valuable in and of themselves. As we worked on Atlas we were also thinking of a great tools experience, and we explored different approaches and technologies for achieving this. Script# is a prototype of one such exploration. It attempts to address some programming environment requirements: &lt;/p&gt;
		&lt;/blockquote&gt;
		&lt;ul&gt;
				&lt;li&gt;A clean language with the natural constructs. Today with script, you can go a long ways in simulating OOP (classes, interfaces, inheritance etc.), but the simulations are thrown at the face of the developer. Various C# constructs such as properties, events, and syntax for defining inheritance go a long way in making the code readable. Similarly modifier keywords like public vs. protected vs. internal, sealed vs. virtual etc. help define a better object model. All of this can be brought into the scripting world. 
&lt;/li&gt;
				&lt;li&gt;Easier refactoring and exploration. Script development could benefit immensely from the refactoring, and class browsing support already present in the IDE and in tools such as .NET Reflector. Both lend themselves to having a more manageable code base over time. 
&lt;/li&gt;
				&lt;li&gt;Ability to generate documentation. Again doc-comments from C# and the existing infrastructure could be leveraged here. 
&lt;/li&gt;
				&lt;li&gt;Ability to customize the script code easily. For example, I'll show debug vs. release and minimization below. The same idea could apply to building a version of the script that had more error checking or logging built in when you do need to run diagnostics. The approach could also be used to include instrumentation for the purposes of profiling, measuring code coverage, etc. Another interesting aspect of this project is that it will be able to generate script catering to multiple script profiles such as the current Javascript language, as well as Javascript 2 when it appears. &lt;/li&gt;
		&lt;/ul&gt;
		&lt;blockquote&gt;
				&lt;p&gt;
						&lt;strong&gt;A Rich Scripting Framework&lt;/strong&gt;
				&lt;/p&gt;
				&lt;p&gt;The scripting framework accompanying the Script# framework can be used both from C# or directly from JavaScript. The framework is designed to work on top of JavaScript and technologies prevalent across browsers and platforms. It is very much in early stages at this point, and consists of various layers: &lt;/p&gt;
		&lt;/blockquote&gt;
		&lt;ul&gt;
				&lt;li&gt;An OOP-based type system for better encapsulation of data and logic, that supports applications and components written in C#. 
&lt;/li&gt;
				&lt;li&gt;A base class library that both extends built-in script objects as well as adds new classes that allows one to carry forward a reasonable part of their managed code programming experience. 
&lt;/li&gt;
				&lt;li&gt;Higher level abstractions such as networking, UI controls, etc. enabling focus on application-level logic rather than at raw nuts and bolts of scripting &lt;/li&gt;
		&lt;/ul&gt;
		&lt;p&gt;
				&lt;a href="http://projects.nikhilk.net/Projects/ScriptSharp.aspx"&gt;More from the website&lt;/a&gt;
		&lt;/p&gt;
		&lt;script src="http://feeds.feedburner.com/~s/blueonionsoftware?i=/BlogEntry.aspx?articleId=1c0a3730-6e1e-47df-bc23-577b3e1520d2" type="text/javascript" charset="utf-8"&gt;
		&lt;/script&gt;
</content>
      <post-name>Script# - Developing JavaScript in C#</post-name>
      <categories>
        <category ref="4" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="18dd72fd-0854-41c0-a603-7d2379421129" date-created="2006-08-21T17:51:13.859375-07:00" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=18dd72fd-0854-41c0-a603-7d2379421129" type="normal">
      <title>The Future of Cars is Electric</title>
      <content>
		&lt;p&gt;This is a real interesting read about electric cars from the CEO of &lt;a href="http://www.teslamotors.com/"&gt;Tesla Motors&lt;/a&gt;, makers of all electric vehicles. &lt;/p&gt;
		&lt;blockquote&gt;
				&lt;p&gt;Not too long from now, most cars will be electric. Why? Two reasons: because electric cars are far more efficient than any other kind of car, and because they are the ultimate multi-fuel cars. Sound bold, maybe crazy? Read on.&lt;a id="more-12"&gt;&lt;/a&gt;&lt;/p&gt;
				&lt;p&gt;The May 2006 issue of &lt;a href="http://media.popularmechanics.com/documents/Fuel_of_the_Future-e852.pdf" target="_blank"&gt;&lt;strong&gt;Popular Mechanics&lt;/strong&gt;&lt;/a&gt; magazine got it right in its typical easy-to-understand way. The article was about biofuel, but they compared many technologies in the centerfold sidebar: gasoline, ethanol, methanol, biodiesel, compressed natural gas, hydrogen fuel cells, and, of course, electric cars. They compared the cost of a cross-country drive for each of the cars, all of similar size. The benchmark drive cost is $212 in a Honda Civic. The VW Diesel Golf came close at $230. E85 ethanol (85% ethanol, 15% gasoline) came in at $425; methanol cost $619; the hydrogen fuel cell drive cost a whopping $804! Compressed Natural Gas looked pretty good at $110. And the electric car? $60. And the article wasn’t even about electric cars…&lt;/p&gt;
				&lt;p&gt;Cost per mile is a reasonable approximation of energy consumption. (I set about doing a direct energy consumption comparison in our &lt;a href="http://www.teslamotors.com/media/white_papers/The21stCenturyElectricCar.pdf" target="_blank"&gt;&lt;strong&gt;white paper&lt;/strong&gt;&lt;/a&gt;, but money is a whole lot easier to understand.)&lt;/p&gt;
				&lt;p&gt;The neat thing about electricity is that pretty much any burnable fuel can be converted to electricity efficiently. Sure, there are quite a few inefficient old power plants from the ‘50s still running, but modern, readily-available technology means that even coal can be gasified and burnt cleanly and very efficiently in a combined cycle plant. This is nice to know, considering that we are sitting on an enormous reserve of coal. If there ever was an OCEC (Organization of Coal Exporting Countries), we’d be Saudi Arabia, so to speak.&lt;/p&gt;
		&lt;/blockquote&gt;
		&lt;p&gt;The rest of the article can be found &lt;a href="http://www.teslamotors.com/blog1/?p=12"&gt;here&lt;/a&gt;&lt;/p&gt;
		&lt;script src="http://feeds.feedburner.com/~s/blueonionsoftware?i=/BlogEntry.aspx?articleId=29a8444c-3253-4759-ba82-d90b1ad41fac" type="text/javascript" charset="utf-8"&gt;
		&lt;/script&gt;
</content>
      <post-name>The Future of Cars is Electric</post-name>
      <categories>
        <category ref="6" />
        <category ref="10" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="1735aef9-2734-4747-935a-cb21a751e836" date-created="2006-08-21T17:50:27.390625-07:00" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=1735aef9-2734-4747-935a-cb21a751e836" type="normal">
      <title>Writely Free to All Now</title>
      <content>
		&lt;p&gt;One of the things I need for my blogging software is a good editor. I've been using the FreeTextBox at the easy to remember URL of &lt;a href="http://freetextbox.com/"&gt;http://freetextbox.com/&lt;/a&gt;. It is a very nice WYSIWYG editor that requires no ActiveX controls and integrates directly into your ASP.Net code. Still it lacked something I sorely need. A spell checker. As a result, I started using GMail's editor because it does have a spell checker. Not exactly word processing but it works well enough. I compose in GMail and then copy and paste into my Blog entry screen.&lt;/p&gt;
		&lt;p&gt;But now Google has released &lt;a title="Writely" href="http://www.writely.com/"&gt;Writely&lt;/a&gt; and it's out of beta and free. Writely was snapped up by Google earlier this year. Writely is a word processor that works through the web . It's very much like Microsoft Word, AbiWord or other word processing programs with the advantage of being available anywhere anytime. It automatically saves your work periodically so you don't have to worry about dropped connections wiping out your work. It also has some nice blog publishing features. I'm going to have to spend some time getting to know how this works so I can integrate it into my own blog. Curiously, the spelling dictionary does not have a entry for Writely. Highly recommended.&lt;/p&gt;
		&lt;script src="http://feeds.feedburner.com/~s/blueonionsoftware?i=/BlogEntry.aspx?articleId=dcce437d-9be2-4a32-9377-281b77181527" type="text/javascript" charset="utf-8"&gt;
		&lt;/script&gt;
</content>
      <post-name>Writely Free to All Now</post-name>
      <categories>
        <category ref="7" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="6924b8ad-545d-40dd-9913-511f465f99be" date-created="2006-08-21T17:49:04.390625-07:00" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=6924b8ad-545d-40dd-9913-511f465f99be" type="normal">
      <title>My International Travel Experience</title>
      <content>
		&lt;p&gt;I had the not so desirable luck of traveling immediately after the British announcement about terrorists planning to blow up airplanes with liquid explosives. I was prepared for a much more intense security check. I made sure to comply with the "No Liquids" policy and even went so far as to remove my gel shoe inserts which I sorely missed. I was going to stow them in my checked luggage but since the TSA searches bags I figured why give them an excuse.&lt;/p&gt;
		&lt;p&gt;Outbound from the US to Paris was business as usual. I few questions about gels and liquids but other than that, normal security.&lt;/p&gt;
		&lt;p&gt;Coming back was a bit more intense however. In Paris I was checked three times and my ticket was examined six times. There were also armed military personnel walking the terminals. It's been a while since I've seen an automatic weapons in an international airport. Each of the three security check points were thorough and tedious. The last one occurred just before boarding at the gate. This check was the most thorough. Amazingly, there were people who still had contraband like perfume and makeup. Makes you wonder how they got past the first two checks.&lt;/p&gt;
		&lt;p&gt;Yet for all this security, &lt;strong&gt;no one checked my passport&lt;/strong&gt;. Yes, you heard correctly. I went through customs as usual, but when I got to the front of the line, they just waved me through. That's the first time I just skipped through customs. Stranger still was that there was essentially no line, so it was not like it was crowded. As far as I could tell, the customs officer was busy filling out some paper work and didn't want to bother with me. Being a WASPy looking type, I guess he figured I was safe. Scary if you ask me.&lt;/p&gt;
		&lt;p&gt;US Customs in Detroit seemed a bit more vigilant as well. They asked more questions of me than the usual where did you go and do you have contraband. Still it was relatively painless&lt;/p&gt;
</content>
      <post-name>My International Travel Experience</post-name>
      <categories>
        <category ref="6" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="cefdc5e9-0eef-465b-b72a-e12a0534e751" date-created="2006-08-20T17:47:36.890625-07:00" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=cefdc5e9-0eef-465b-b72a-e12a0534e751" type="normal">
      <title>Travel, Updates and a New Project Idea</title>
      <content>
		&lt;p&gt;It has been another one of those whirlwind weeks. I was on a plane Monday to Germany to do some architecture planning for a new medical application. During the week I tried to update this blog and actually managed two articles although their not quite the quality I would have hoped for.&lt;/p&gt;
		&lt;p&gt;My "writing my own blog experiment" continues. I've cleaned up several things, added an RSS feed that actually validates and cleaned up the "add a comment" interface a bit. Overall, I have a very serviceable blog. I then decided to add categories and more editing feature when it occurred to me that I was having far too much fun doing this and had to stop. After all, I have several other projects to finish.&lt;/p&gt;
		&lt;p&gt;It then occurred me that this blog software could really be packaged into a server control. At least I think it can be done that way. It would then be a one-liner (probably a long one) to add blogging to any ASP.Net site without the hassle of database connections or lengthy installs. To that end I've christened the new project with the somewhat cute name of "Bloget". It won't replace the Bloggers and WordPresses of the world but hopefully will provide a nice, self-contained blogging environment for those of us who prefer to do things are own way. &lt;br /&gt;&lt;/p&gt;
</content>
      <post-name>Travel, Updates and a New Project Idea</post-name>
      <categories>
        <category ref="2" />
        <category ref="6" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="fc36baa7-9ec4-4158-b070-144d2f35ff0a" date-created="2006-08-17T17:45:15.75-07:00" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=fc36baa7-9ec4-4158-b070-144d2f35ff0a" type="normal">
      <title>ASP.Net Blog Control, Where art thou? (continued)</title>
      <content>
		&lt;p&gt;In&lt;a href="/BlogArticle.aspx?articleId=6d08d1d4-3a79-4ae4-9b3f-ada86eda4471"&gt; part one&lt;/a&gt; I discussed some of my motivation for writing my own blog software, not the least of which I'm cheap. But really, it's not all that hard once you know you're way around .Net. Perhaps the hardest part of .Net is just getting to know the breath and depth of the .Net library. Part one introduced you to XmlSerializer, a quick and easy way to serialize an object to XML and back again. But the object model was incomplete so let's fill that in and introduce a few new .Net 2.0 concepts along the way.&lt;/p&gt;
		&lt;p&gt;Remember the ArticleCollection class that was embedded in the Blog class from part one? Well, not surprisingly, it's a collection of BlogArticles. Here's the class.&lt;/p&gt;
		&lt;p&gt;public class BlogArticle&lt;br /&gt;{&lt;br /&gt;  private Guid id = Guid.NewGuid();&lt;br /&gt;  private string title = "New Article";&lt;br /&gt;  private DateTime date = DateTime.Now;&lt;br /&gt;  private string article;&lt;br /&gt;  private BlogCommentCollection comments;&lt;/p&gt;
		&lt;p&gt;  public Guid Id&lt;br /&gt;  {&lt;br /&gt;      get { return id; }&lt;br /&gt;      set { id = value; }&lt;br /&gt;  }&lt;/p&gt;
		&lt;p&gt;  public string Title&lt;br /&gt;  {&lt;br /&gt;      get { return title; }&lt;br /&gt;      set { title = value; }&lt;br /&gt;  }&lt;/p&gt;
		&lt;p&gt;  public DateTime Date&lt;br /&gt;  {&lt;br /&gt;      get { return date; }&lt;br /&gt;      set { date = value; }&lt;br /&gt;  }&lt;/p&gt;
		&lt;p&gt;  public string Article&lt;br /&gt;  {&lt;br /&gt;      get { return article; }&lt;br /&gt;      set { article = value; }&lt;br /&gt;  }&lt;/p&gt;
		&lt;p&gt;  public BlogCommentCollection Comments&lt;br /&gt;  {&lt;br /&gt;      get { return comments; }&lt;br /&gt;      set { comments = value; }&lt;br /&gt;  }&lt;br /&gt;}&lt;/p&gt;
		&lt;p&gt;Id member is a GUID. What's a GUID you say? Why it's a Global Unique Identifier. If you've ever programmed in COM (an earlier Microsoft technology filled with pain and loathing) you'll recognize the GUID. According to the documentation, it has a "very low probability of being duplicated." In this case low probability means not in this lifetime, or the next or the next million or so. There are lots of other ways to generate identifiers I suppose but this one is easy and I don't have to keep a counter around.&lt;/p&gt;
		&lt;p&gt;Title, date and article should be self explanatory and then there's another collection. This is just the collection of comments associated with the article. We'll explore comments later.&lt;/p&gt;
		&lt;p&gt;So that's one article, but of course our blog has multiple articles. Sounds like we need a collection and I've got just the ticket.&lt;/p&gt;
		&lt;p&gt;public class ArticleCollection : KeyedCollection&amp;lt;Guid, BlogArticle&amp;gt;&lt;br /&gt;{&lt;br /&gt;  protected override Guid GetKeyForItem(BlogArticle item)&lt;br /&gt;  {&lt;br /&gt;      return item.Id;&lt;br /&gt;  }&lt;br /&gt;}&lt;/p&gt;
		&lt;p&gt;Now we have two new things here. Generics and KeyedCollections. We'll start with the generics.&lt;/p&gt;
		&lt;p&gt;Generics let you tailor a method, class, structure, or interface to the precise data type it acts upon. In .Net 1.1, you would likely use an ArrayList for something like this. However, ArrayList offers no type safety, something we programmers desire. In effect, the generic lets us that a predefined behavior like maintaining things in a orderly list and apply it to a specific type. This has all sorts of advantages and saves you a few headaches along the way. You can read more on generics at MSDN or as always, just "Google it."&lt;/p&gt;
		&lt;p&gt;The KeyedCollection&amp;lt;&amp;gt; template is quite fun. There are lots of ways to keep lists of things. We could put in a plain old list. Problem with that is that we have to "walk" the list to find and item. A dictionary is another method. With a dictionary, we could access the article we want using the Id as a key to finding it. Better, but we end up keeping two lists. One for the keys and one for the articles. The KeyedCollection lies somewhere in between, acting like a dictionary but without the overhead.&lt;/p&gt;
		&lt;p&gt;KeyedCollections require an override to be implemented that identifies the key that is associated with the item (the article in this case). Since we generate a unique Id when we create a BlogArticle, it makes for a handy key for the KeyedCollection.&lt;/p&gt;
		&lt;p&gt;KeyedCollections have all the methods you would expect for a collection class like add, remove, and contains. And it shouldn't be a great leap to figure out what the BlogCommentCollection is all about. Here's the classes for BlogComment and BlogCommentCollection.&lt;/p&gt;
		&lt;p&gt;public class BlogComment&lt;br /&gt;{&lt;br /&gt;  string author;&lt;br /&gt;  string email;&lt;br /&gt;  string comment;&lt;br /&gt;  DateTime date = DateTime.Now;&lt;/p&gt;
		&lt;p&gt;  public DateTime Date&lt;br /&gt;  {&lt;br /&gt;      get { return date; }&lt;br /&gt;      set { date = value; }&lt;br /&gt;  }&lt;/p&gt;
		&lt;p&gt;  public string Author&lt;br /&gt;  {&lt;br /&gt;      get { return author; }&lt;br /&gt;      set { author = value; }&lt;br /&gt;  }&lt;/p&gt;
		&lt;p&gt;  public string Email&lt;br /&gt;  {&lt;br /&gt;      get { return email; }&lt;br /&gt;      set { email = value; }&lt;br /&gt;  }&lt;/p&gt;
		&lt;p&gt;  public string Comment&lt;br /&gt;  {&lt;br /&gt;      get { return comment; }&lt;br /&gt;      set { comment = value; }&lt;br /&gt;  }&lt;br /&gt;}&lt;/p&gt;
		&lt;p&gt;public class BlogCommentCollection : Collection&amp;lt;BlogComment&amp;gt;&lt;br /&gt;{&lt;br /&gt;}&lt;/p&gt;
		&lt;p&gt;And that pretty much rounds out the object model. A little basic yes, but then we're not writing a Blogger type service. Now I know some of you are thinking that I should have kept the comment collection separate and linked to it with the BlogArticle.Id. If I were doing a database backed design, I would agree, but heck, I just wanted to get the thing done and get back to other things (like finishing Calendar Gadget) and I really didn't want to deal with multiple files.&lt;/p&gt;
		&lt;p&gt;And what's cooler still, is that XmlSerializer understands this object model including the collections. That means as I add articles and comments, XmlSerializer keeps it all persisted in XML and I get to think only in terms of the object model.&lt;br /&gt;&lt;/p&gt;
		&lt;script src="http://feeds.feedburner.com/~s/blueonionsoftware?i=/BlogEntry.aspx?articleId=f3da3a58-f1dd-42bd-a9aa-bfc584220bd7" type="text/javascript" charset="utf-8"&gt;
		&lt;/script&gt;
</content>
      <post-name>ASP.Net Blog Control, Where art thou? (continued)</post-name>
      <categories>
        <category ref="1" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="306b643f-a6a3-4885-b5ea-8735262c73f1" date-created="2006-08-16T17:43:21.90625-07:00" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=306b643f-a6a3-4885-b5ea-8735262c73f1" type="normal">
      <title>ASP.Net blog control, Where art thou?</title>
      <content>
		&lt;p&gt;One of the things I needed for the new site is a blog. Now there are lots of way to blog these days from custom software to services. However, I wanted something that would integrate with my site. I also wanted to have access to the data store. Oddly, however, there is not much in the way of free Asp.Net blogging components. This strikes me as odd since it is a relatively easy thing to write.&lt;/p&gt;
		&lt;p&gt;So, not having anything available I did what any programmer in my situation does - write one myself. Since my needs are modest when it comes to blogging I implemented a minimal set of features. I needed to add and edit articles, accept comments, produce an index and syndicate a feed. Also, since I'm not what you call a prolific writer, a simple file based storage system should suffice. Over the next half  dozen entries or so, I'll discuss my journey and some of the cool things I discovered about Asp.Net.&lt;/p&gt;
		&lt;p&gt;To begin with (sounds like the opening to some famous novel) I need to store data. I'm not really into databases unless I really need them and so I went with an XML file. No surprise here. XML is a machine readable format and .Net has excellent support. The real question of course is how to read and write the XML?&lt;/p&gt;
		&lt;p&gt;There again are many options but I went for the easiest and most straightforward solution which was to read and write the file in its entirety. Yeah, I know this is not efficient and all that but frankly, until I get 500 or 1000 entries, it just doesn't take all the much horsepower to read and write the entire file.&lt;/p&gt;
		&lt;p&gt;Also, I don't like to think in terms of XML per-se. It's just a serialization methodology and so I don't want to have XML references littered all over my code. Instead, I like to think in terms of object models.&lt;/p&gt;
		&lt;p&gt;And so that's where we'll begin. A blog is really just a collection of articles and maybe some comments about those articles. You could spice it up with categories and such but that's what a good search is for in my opinion. So let's write a blog class.&lt;/p&gt;
		&lt;pre&gt;public class Blog&lt;br /&gt;{&lt;br /&gt;  string title;&lt;br /&gt;  string description;&lt;br /&gt;  ArticleCollection articles;&lt;/pre&gt;
		&lt;pre&gt;  public string Title&lt;br /&gt;  {&lt;br /&gt;    get { return title; }&lt;br /&gt;    set { title = value; }&lt;br /&gt;  }&lt;/pre&gt;
		&lt;pre&gt;  public string Description&lt;br /&gt;  {&lt;br /&gt;    get { return description; }&lt;br /&gt;    set { description = value; }&lt;br /&gt;  }&lt;/pre&gt;
		&lt;pre&gt;  public ArticleCollection Articles&lt;br /&gt;  {&lt;br /&gt;    get { return articles; }&lt;br /&gt;    set { articles = value; }&lt;br /&gt;  }&lt;/pre&gt;
		&lt;pre&gt;  public void Save(Stream stream)&lt;br /&gt;  {&lt;br /&gt;    XmlSerializer xs = new XmlSerializer(typeof(Blog));&lt;br /&gt;    xs.Serialize(stream, this);&lt;br /&gt;  }&lt;/pre&gt;
		&lt;pre&gt;  static public Load(Stream stream)&lt;br /&gt;  {&lt;br /&gt;    XmlSerializer xs = new XmlSerializer(typeof(Blog));&lt;br /&gt;    return (Blog)xs.Deserialize(stream);&lt;br /&gt;  } &lt;br /&gt;}&lt;/pre&gt;
		&lt;p&gt;OK, I left a lot of stuff out like error checking and never mind what the ArticleCollection object is just yet. What's interesting about all this is that all the reading and writing of XML is done in about 4 lines of code. The XML emitted and read by these lines hides all the difficult tasks serializing/deserializing the object to and from XML. You can read more about XmlSerializers in the MSDN online help and else where (just Google it). &lt;/p&gt;
		&lt;p&gt;Next time I'll discuss the mysterious ArticleCollection object and how XmlSerializers work with collections.&lt;/p&gt;
</content>
      <post-name>ASP.Net blog control, Where art thou?</post-name>
      <categories>
        <category ref="1" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="3f951de3-9c77-4235-9c21-034883e60d1a" date-created="2006-08-13T17:40:31.625-07:00" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=3f951de3-9c77-4235-9c21-034883e60d1a" type="normal">
      <title>Site Rewritten in ASP.Net</title>
      <content>
		&lt;p&gt;I'm back after a week of building a new site. If you have been here before you'll notice the site looks a little different. I've abandoned DotNetNuke and went to writing in Asp.Net directly. Having never done written in Asp.Net before, there was a bit of a learning curve. Still, with some effort I was able to produce a new site with most of the content of the old site.&lt;/p&gt;
		&lt;p&gt;Asp.Net is an interesting technology. Having been a LAMP (Linux, Apache, MySql, PHP) hack for a number of years, it was refreshing to use an environment that has built in features I usually implement myself. I'm sure I have not written my site in an optimal fashion given my limited knowledge of Asp.Net, but I still was able to take advantage of caching and master pages and XML translation controls. There's a lot to like about ASP.Net.&lt;/p&gt;
		&lt;p&gt;So why did I abandon DotNetNuke? In a word, stability. I kept noticing all sorts of odd behavior and bugs that kept me from doing things I wanted to do. Also, I ran into a situation where it would not let me add any new modules. I tried debugging the problem for a while but concluded my time was better spent writing the site in something I controlled and understood. I like the idea of content management systems but it would seem that in the case of DotNetNuke it has a ways to go.&lt;/p&gt;
		&lt;p&gt;One thing I don't like is the seemingly broken Publish Wizard in VS 2005. I tried a couple times to get it to work only to have the IDE hang. I finally just FTP'ed the whole site up. Seems like they have some work to do there.&lt;br /&gt;&lt;/p&gt;
		&lt;script src="http://feeds.feedburner.com/~s/blueonionsoftware?i=/BlogEntry.aspx?articleId=e95d9d10-e5f0-4691-b6c8-80cb87f33bd3" type="text/javascript" charset="utf-8"&gt;
		&lt;/script&gt;
</content>
      <post-name>Site Rewritten in ASP.Net</post-name>
      <categories>
        <category ref="1" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="1b7684ef-7073-4dd9-a8b6-d52cb05b5885" date-created="2006-08-03T17:39:10.078125-07:00" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=1b7684ef-7073-4dd9-a8b6-d52cb05b5885" type="normal">
      <title>Radioactive Decay Decrease May Reduce Nuclear Waste</title>
      <content>
		&lt;p&gt;I don't know about you, but with all the talk of global warming it seems likely that we will be generating more of our power from alternative sources and nuclear seems the only short-term answer at the moment.&lt;!--StartFragment--&gt;&lt;/p&gt;
		&lt;p&gt;"PhysicsWeb is reporting that German scientists may have found a way to significantly &lt;a href="http://physicsweb.org/articles/news/10/7/13/1"&gt;reduce the radioactive decay time&lt;/a&gt; of nuclear waste. This could render the waste harmless in just tens of years and make disposal much less difficult as opposed to current standards. From the article: 'Their proposed technique - which involves slashing the half-life of an alpha emitter by embedding it in a metal and cooling the metal to a few degrees kelvin - could therefore avoid the need to bury nuclear waste in deep repositories, a hugely expensive and politically difficult process. But other researchers are skeptical and believe that the technique contradicts well-established theory as well as experiment.'"&lt;/p&gt;
</content>
      <post-name>Radioactive Decay Decrease May Reduce Nuclear Waste</post-name>
      <categories>
        <category ref="10" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="7886e425-2ccb-4107-9963-9919b7407bba" date-created="2006-07-09T17:38:24.390625-07:00" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=7886e425-2ccb-4107-9963-9919b7407bba" type="normal">
      <title>Godaddy Web Hosting - A Good Value</title>
      <content>
		&lt;p&gt;I've been a fan of Godaddy.com for a number of years now. Besides cheap domain names, they really have pretty decent web service. I've read all sorts of reports from various forums and blogs as to how terrible they are but my experience has been just the opposite. That's not to say I've had no problems.&lt;/p&gt;
		&lt;p&gt;Godaddy's Web hosting has got to be the best deal going. For $4.00/month you get decent, storage, lots of bandwidth, and your choice of Windows or Linux hosting. I've both Windows and Linux hosting.&lt;/p&gt;
		&lt;p&gt;The Linux hosting does not come with much support. Really I don't care since most online help is worthless. Still, I couldn't get password protected directories to work on Godaddy, even after following the directions in their FAQ. The FAQ said they did not provide technical support for Apache related items. Still I called and was met with a polite and knowledgeable CSR. We conversed for 20 minutes until we realized that we both had interpreted the FAQ wrong. He agreed that the directions were misleading and promised they would get if fixed (they never did). While the directions may have been misleading, I really couldn't complain about the service.&lt;/p&gt;
		&lt;p&gt;Another time I renamed this site to BlueOnionSoftware and lost all my DotNetNuke work. It was a real shocker. Called service, and got a great CSR in under 4 minutes. He worked like hell to try and resolve it. In the end though there was nothing he could do. The database was tied to the domain and not the web account. I consider this a flaw in their hosting but what host doesn't have flaws. I renamed my web account back to the old domain and everything restored. I should complain but I can't because the price is so darn good. Again for $4.00/month, I get DotNetNuke backed by MS-SQL (all 5 gigabytes if I need it) and some not to shabby technical support. Really it's hard to complain.&lt;/p&gt;
		&lt;p&gt;Is Godaddy perfect? Far from it, but it's not the predatory, incompetent, take your money and run organization that some people claim they are. Not in my experience at least.&lt;/p&gt;
</content>
      <post-name>Godaddy Web Hosting - A Good Value</post-name>
      <categories>
        <category ref="7" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="c5ed0f68-3386-4475-a283-2e1e7998987d" date-created="2006-07-07T17:35:22.4375-07:00" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=c5ed0f68-3386-4475-a283-2e1e7998987d" type="normal">
      <title>Travel in Europe has its Ups and Downs</title>
      <content>
		&lt;p&gt;On occasion, I travel to Europe on business for my day job (Blue Onion Software is my hobby, not my living, bummer). Travel in Europe is really easy compared to what is was say 20 years ago. English is spoken in most major urban areas and if you are the least bit linguistically inclined, you can figure out the signage in short time. &lt;/p&gt;
		&lt;p&gt;Still there are those little cultural differences that sneak up on you from time to time. The one that caused me a bit of confusion were the arrows on signs. In the US, an arrow pointing upwards indicates "straight ahead". In Europe, an arrow pointing downwards, indicates "straight ahead". It's a little thing but several times I found myself a little disoriented (especially in airports). This did get me wondering what an upwards arrow means in Europe. Likely it means up like in up-the-stairs but I'm not entirely sure since I don't remember seeing one.&lt;/p&gt;
		&lt;p&gt;I'm interested in what others have found in their foreign travels that is a bit different than what we expect here in the states.&lt;/p&gt;
		&lt;script src="http://feeds.feedburner.com/~s/blueonionsoftware?i=/BlogEntry.aspx?articleId=013eb351-80b2-495b-a2d1-fcb588e4553b" type="text/javascript" charset="utf-8"&gt;
		&lt;/script&gt;
</content>
      <post-name>Travel in Europe has its Ups and Downs</post-name>
      <categories>
        <category ref="6" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="fe224701-3d50-4531-a567-4f8a40d9cf9b" date-created="2006-07-02T17:33:41.921875-07:00" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=fe224701-3d50-4531-a567-4f8a40d9cf9b" type="normal">
      <title>Ruby and Sapphire in Steel</title>
      <content>
		&lt;p&gt;Scott Hanselman's blog is one my favorites. He does a great job of condensing complex and interesting technologies into manageable chunks. The link below discusses Ruby and a very cool tool called &lt;a href="http://www.sapphiresteel.com/"&gt;&lt;strong&gt;Sapphire in Steel&lt;/strong&gt;&lt;/a&gt; that integrates Ruby into the Visual Studio 2005 IDE. I haven't tried it yet but of course I've downloaded on Scott's recommendation for later use. Below is a link to Scott's original blog entry. Enjoy! &lt;/p&gt;
		&lt;p&gt;
				&lt;a href="http://www.hanselman.com/blog/SapphireInSteelRubyWithinVisualStudio2005.aspx"&gt;http://www.hanselman.com/blog/SapphireInSteelRubyWithinVisualStudio2005.aspx&lt;/a&gt;
		&lt;/p&gt;
</content>
      <post-name>Ruby and Sapphire in Steel</post-name>
      <categories>
        <category ref="8" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="caab4006-9be5-4147-8eed-7770d3cf1a4b" date-created="2006-06-27T17:25:47.40625-07:00" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=caab4006-9be5-4147-8eed-7770d3cf1a4b" type="normal">
      <title>Quick Maps Beta</title>
      <content>
		&lt;p&gt;Quickmaps allows one to annotate Google maps with lines, symbols and text. It's a mashup (meaning a website or web application that uses content from more than one source to create a completely new service). Very useful and very free (requires registration).&lt;/p&gt;
		&lt;p&gt;
				&lt;a href="http://quickmaps.com/"&gt;http://quickmaps.com/&lt;/a&gt;
		&lt;/p&gt;
</content>
      <post-name>Quick Maps Beta</post-name>
      <categories />
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="24d6219c-08f2-46cf-92c7-a5fc6e6ead6a" date-created="2006-06-24T17:23:31.5625-07:00" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=24d6219c-08f2-46cf-92c7-a5fc6e6ead6a" type="normal">
      <title>.Net 3.0 Features</title>
      <content>
		&lt;p&gt;One of the things I'll write about from time to time is programming in Microsoft's .Net Frameworks. The Java, Ruby, Python, &lt;insert language="" your="" favorite="" here=""&gt;crowds will moan. Quite frankly, I don't have much patience for these comments. I've made my living for many years programming Windows and related technologies and I suspect many of you have as well. Love them or hate them, the folks have Microsoft come up with some cool ideas from time to time.&lt;/insert&gt;&lt;/p&gt;
		&lt;p&gt;.Net 2.0 has been shipping for several months now. Being the curious type, I'm already trying to understand what's new in .Net 3.0. There is a nice little series of articles on these new features at:&lt;/p&gt;
		&lt;p&gt;
				&lt;a href="http://linqinaction.net/blogs/sahilmalik/archive/2006/06/18/24.aspx"&gt;http://linqinaction.net/blogs/sahilmalik/archive/2006/06/18/24.aspx&lt;/a&gt;
		&lt;/p&gt;
</content>
      <post-name>.Net 3.0 Features</post-name>
      <categories>
        <category ref="0" />
        <category ref="4" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="d1cf98a6-fe2b-4d1d-865f-27ea55221ffc" date-created="2006-06-23T15:59:25.078125-07:00" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=d1cf98a6-fe2b-4d1d-865f-27ea55221ffc" type="normal">
      <title>Back From Germany</title>
      <content>
		&lt;p&gt;Had to take a few days off to fly to Germany. My day job requires regular trips to the Germany these days. I really like the food there, maybe a bit too much.&lt;/p&gt;
		&lt;p&gt;As you can see from the site, I've been playing with DotNetNuke skins. You could make a full time job out just skinning sites. I'm trying to stay focused however and get this thing done.&lt;/p&gt;
		&lt;p&gt;Calendar Gadget is also coming along. I've finally resolved an issue I had with how to reference images in a not too confusing way. :)&lt;/p&gt;
		&lt;p&gt;I'm hoping to ship the first alpha soon. Hang in there...&lt;/p&gt;
</content>
      <post-name>Back From Germany</post-name>
      <categories>
        <category ref="6" />
      </categories>
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
    <post id="f4b29768-cc40-4279-b3f6-9b0f50b79035" date-created="2006-06-22T14:35:42.96875-07:00" post-url="http://blueonionsoftware.com/Blog.aspx?m=View&amp;p=f4b29768-cc40-4279-b3f6-9b0f50b79035" type="normal">
      <title>Welcome to Bloget</title>
      <content>
		&lt;p&gt;Success! Despite my best efforts, you've managed to get Bloget working. Here a few tips to help keep you going.&lt;/p&gt;
		&lt;ul&gt;
				&lt;li&gt;Backup regularly! Bloget writes to files, not a database so it should be relatively easy to backup. There is no built in data recovery.  
&lt;/li&gt;
				&lt;li&gt;Use seperate directories. If you set your data file to &lt;strong&gt;~/App_Data/Bloget.xml&lt;/strong&gt; consider placing it in a seperate directory like &lt;strong&gt;~/App_Data/MyBlog/Bloget.xml&lt;/strong&gt;. Bloget saves each blog entry to a seperate file in the same directory as your data file. If you are planning on multiple blogs, this is a good way to keep things organized. 
&lt;/li&gt;
				&lt;li&gt;The default navigation is as follows. Click on the title of the article to get a detailed view including comments. Click on the title again to edit the article itself. 
&lt;/li&gt;
				&lt;li&gt;Download &lt;a href="http://www.iespell.com/"&gt;ieSpell&lt;/a&gt; to add spell checking. 
&lt;/li&gt;
				&lt;li&gt;Here are some links to your new blog: 
&lt;ul&gt;&lt;li&gt;&lt;a href="Default.aspx"&gt;Blog&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="Default.aspx?mode=properites"&gt;Properties&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="Default.aspx?mode=item&amp;amp;item=f4b29768-cc40-4279-b3f6-9b0f50b79035"&gt;Dispay this Blog Entry&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="Default.aspx?mode=edit&amp;amp;item=f4b29768-cc40-4279-b3f6-9b0f50b79035"&gt;Edit this Blog Entry&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="Default.aspx?mode=rss"&gt;RSS&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
		&lt;/ul&gt;
		&lt;p&gt;Comments and feedback are always welcomed. Enjoy - Mike&lt;/p&gt;
</content>
      <post-name>Welcome to Bloget</post-name>
      <categories />
      <comments />
      <trackbacks />
      <attachments />
      <authors>
        <author ref="0" />
      </authors>
    </post>
  </posts>
</blog>